2010-02-01 94 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