Javascript 使用window.open()打开不同的链接

Javascript 使用window.open()打开不同的链接,javascript,jsf,hyperlink,Javascript,Jsf,Hyperlink,我有一个dataTable,其中一列包含URL。点击这些链接,我必须在新页面中打开相应的链接。我正在使用window.open()打开这些链接。 它正在打开一个新窗口,但不显示页面。我使用的javascript代码是: function openDisclaimer(objectId) { var disclaimerID = objectId.id; var url = document.getElementById(objectId).value; window.open(url); }

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

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



只需检查objectID返回的内容

只需检查objectID返回的内容

为什么不这样做:

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

为什么不这样做:

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

首先,在古老的JSF版本中,有一个bug导致CommandLink无法以这种方式工作。确保您使用的是最新版本/内部版本。Mojara可用,MyFaces可用

至于您的实际问题,commandlink基本上会生成一个链接,提交父表单。它应该放在
h:form
中,但这里您只需要一个普通的链接。在这种情况下,将其替换为
h:outputLink
。不要忘记添加
返回false结束单击事件以阻止链接的默认操作

<h:outputLink 
    value="#{managePersonalization.disclaimerURL}" 
    onclick="openDisclaimer(this); return false;">
    <h:outputText value="Disclaimer" />
</h:outputLink>
您还可以看到
document.getElementById
被删除,因为它没有任何意义,因为您已经将唯一的元素作为函数参数

您甚至可以取消整个功能:

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

首先,在古老的JSF版本中,有一个bug导致CommandLink不能以这种方式工作。确保您使用的是最新版本/内部版本。Mojara可用,MyFaces可用

至于您的实际问题,commandlink基本上会生成一个链接,提交父表单。它应该放在
h:form
中,但这里您只需要一个普通的链接。在这种情况下,将其替换为
h:outputLink
。不要忘记添加
返回false结束单击事件以阻止链接的默认操作

<h:outputLink 
    value="#{managePersonalization.disclaimerURL}" 
    onclick="openDisclaimer(this); return false;">
    <h:outputText value="Disclaimer" />
</h:outputLink>
您还可以看到
document.getElementById
被删除,因为它没有任何意义,因为您已经将唯一的元素作为函数参数

您甚至可以取消整个功能:

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


我打电话给js的原因如下:它的给出ID是DataTable单元格的ID我打电话给js的原因如下:它的给出ID是DataTable单元格的ID谢谢你的回复。它的给定javascript错误)预期“好吧,只需添加一个引号。我忘了。生成的javascript是什么样子的?那么你的URL是错误的。这就是我和BalusC想要生成javascript的原因。转到查看源代码并查看。感谢您的回复。它的给定javascript错误)预期“好吧,只需添加一个引号。我忘了。生成的javascript是什么样子的?那么你的URL是错误的。这就是我和BalusC想要生成javascript的原因。转到查看源代码并查看。感谢您的回复。我尝试了上面的代码片段。在Mozilla中,它的给出错误“c未注册协议”&在IE中,它的给出“拒绝访问”我也尝试了h:commandLink。它正在打开同一页,但没有链接。它是
h:outputLink
,输出链接。您是否添加了
返回false?您指定了正确的URL吗?你有最新的JSF版本吗?是否在HTML输出中生成
onclick
属性?您是否尝试了
target
属性?在现代浏览器中,
window.open
触发的弹出窗口通常被阻止。若你们需要更好的帮助,用生成的HTML输出更新你们的问题;url是正确的。已尝试目标属性。1)升级到1.1_02 2)如果您需要更好的帮助(升级到1.1_02并进行测试之后!),请使用生成的HTML输出更新问题。谢谢您的回复。我尝试了上面的代码片段。在Mozilla中,它的给出错误“c未注册协议”&在IE中,它的给出“拒绝访问”我也尝试了h:commandLink。它正在打开同一页,但没有链接。它是
h:outputLink
,输出链接。您是否添加了
返回false?您指定了正确的URL吗?你有最新的JSF版本吗?是否在HTML输出中生成
onclick
属性?您是否尝试了
target
属性?在现代浏览器中,
window.open
触发的弹出窗口通常被阻止。若你们需要更好的帮助,用生成的HTML输出更新你们的问题;url是正确的。目标属性已尝试。1)升级到1.1_02 2)如果您需要更好的帮助(升级到1.1_02并进行测试之后!),请使用生成的HTML输出更新问题。您有JSF,它生成JavaScript+HTML,并生成输出。你只是给我们看两端。问题发生在哪里?生成的HTML+JavaScript是否与您期望的不一样,或者您从生成的HTML+JavaScript中得到的结果是否与您期望的不一样?您有JSF,它生成JavaScript+HTML,并生成输出。你只是给我们看两端。问题发生在哪里?生成的HTML+JavaScript是否与您期望的不一样,或者您从生成的HTML+JavaScript中得到的结果是否与您期望的不一样?