2010-02-01 99 views
2

我有一个dataTable,其中一列包含URL。点击这些链接,我必须在新页面中打开相应的链接。我正在使用window.open()来打开这些链接。 它打开一个新窗口但不显示页面。我使用的JavaScript代码是:使用window.open()打开不同的链接()

function openDisclaimer(objectId) 
{ 
var disclaimerID = objectId.id; 
var url = document.getElementById(objectId).value; 
window.open(url); 
} 

<h:commandLink id="dsclaimLink" value="#{managePersonalization.disclaimerURL}" onclick="openDisclaimer(this);" > 
+0

你有JSF,其生成JavaScript + HTML,产生一个输出。你只是向我们展示了两端。问题在哪里发生?生成的HTML + JavaScript不是您所期望的,还是您得到的结果与您生成的HTML + JavaScript期望值不符? – Quentin 2010-02-01 15:42:26

回答

-1

只是检查有哪些呢的objectID返回

+0

我打电话给js: 它为此提供ID http:// localhost:9080/WEB/addPers.faces# – 2010-02-01 11:13:21

+0

其数据单元格的标识表 – 2010-02-01 11:15:00

+0

反对票的原因是什么? – Ravia 2010-02-15 11:57:29

0

你为什么不去做这样的:

<h:commandLink id="dsclaimLink" value="#{managePersonalization.disclaimerURL}" 
    onclick="window.open('#{managePersonalization.disclaimerURL}');" /> 
+0

感谢您的回复。 它给javascript错误“)预计” – 2010-02-01 11:53:51

+0

好,只需添加单引号。我忘了它。 – Bozho 2010-02-01 11:57:48

+0

我也试过用单引号。给javascript错误 – 2010-02-01 13:25:56

1

首先,在古老的JSF版本中存在一个导致命令链接无法工作的错误。确保您使用的是最新版本/内部版本。 Mojarra可用here和MyFaces可用here

至于你的实际问题,一个commandlink基本上会产生一个链接提交父表格。它应该被放置在一个h:form,但在这里你只是想要一个普通香草链接。在这种情况下,请将其替换为h:outputLink。不要忘记在点击事件结束时添加return false;以阻止链接的默认操作。

<h:outputLink 
    value="#{managePersonalization.disclaimerURL}" 
    onclick="openDisclaimer(this); return false;"> 
    <h:outputText value="Disclaimer" /> 
</h:outputLink> 

此外,value属性实际上作为产生<a>元素的href属性结束,所以你的JavaScript需要修复它从href属性,而不是value属性(JavaScript并没有看到获取URL JSF的源代码,而只是将其产生的HTML输出):

function openDisclaimer(link) { 
    window.open(link.href); 
} 

你也看到document.getElementById被删除,因为它没有任何意义,因为你已经拥有唯一的元素作为函数参数! ;)

你甚至可以摆脱整体功能:

<h:outputLink 
    value="#{managePersonalization.disclaimerURL}" 
    onclick="window.open(this.href); return false;"> 
    <h:outputText value="Disclaimer" /> 
</h:outputLink> 

或者,如果你真的想要一个worthfully标签/窗口,而不是一个弹出窗口,那么你也可以只是使使用您设置为_blanktarget属性:

<h:outputLink 
    value="#{managePersonalization.disclaimerURL}" 
    target="_blank"> 
    <h:outputText value="Disclaimer" /> 
</h:outputLink> 
+0

感谢您的回复。我试过上面的代码片段。在Mozilla中,它给出的错误“c不是注册协议”,在IE中它给出'访问被拒绝' – 2010-02-01 12:15:21

+0

我试过用h:commandLink。尽管有链接,它正在打开相同的页面。 – 2010-02-01 12:16:29

+0

它是'h:outputLink',**输出**链接。你添加了“返回false”吗?您是否指定了**正确的**网址?你有最近的JSF版本吗? HTML输出中是否生成了“onclick”属性?你尝试过'target'属性吗?现代浏览器通常会阻止'window.open'触发的弹出窗口。如果您需要更好的帮助,请使用生成的HTML输出更新您的问题。 – BalusC 2010-02-01 12:28:52