2012-04-04 15 views
0

我是綠色的JavaScript,但我的背景中有一些C++,所以我理解編碼的原則,只是不做太多的網頁材料。 我有一個電子郵件鏈接,需要做兩件事情之一,取決於iframe是否存在。此代碼存在於父頁面(index.html)中,因此iframe將是一個孩子(我假設)。 如果還沒有iframe,我需要這個代碼(gb_page_fs []調用一些代碼來創建iframe)。在現有的iframe或運行代碼中打開鏈接,具體取決於iframe是否存在

<a href="contact.html" rel="gb_page_fs[]">e-mail</a> 

如果iframe的存在,它會被命名爲「GB_frame」,這是我需要的鏈接代碼:

<a href="contact.html" target="GB_frame">e-mail</a> 

我有兩個問題:試圖找出如果框架存在,執行第二個案例代碼。我看過很多代碼來識別父級iFrame名稱,但不是子級。我得到的最接近的是document.getElementById(「framename」)。name,但是我得到了「無法讀取null屬性的名字」。至於後者,我猜測有一個簡單的解決方案,但我不知道從哪裏開始尋找。

回答

0

您正在對iframe進行正確的測試。你想要做這樣的事情:

var x = document.getElementById('framename'); 
// if the iframe doesn't exist x will be null and the if statement evaluates to false 
if(x) 
{ 
    doSomething(); 
} 

要設置iframe的來源:

document.getElementById('framename').src = 'url to page'; 
+0

傑夫,謝謝!這讓我更靠近一步。但是,無論框架是否打開,我都會得到相同的結果。動態創建並加載iframe是否重要?我暫時將它作爲一個函數調用,通過一個帶有警報輸出的表單按鈕來顯示它是否遵循「if」邏輯或「else」邏輯。 function checkframe(){ var x = document.getElementById('GB_frame'); 如果(X) {警報(x.value + 「如果 」);} 其他 {警報(「 其他」);}} – thirdstring 2012-04-06 10:42:07

+0

@thirdstring沒有,不要緊,當iframe中添加(如只要在你尋找它之前它就在那裏)。我注意到你的警報中有x.value。值不是iframe的有效屬性,因此您將得到一個未定義的值。看看這個鏈接:[http://jsfiddle.net/vEnjR/3/](http://jsfiddle.net/vEnjR/3/)。這是一個動態添加iframe然後驗證其存在的工作示例。如果您有更多問題,請告訴我。 – 2012-04-06 15:22:36

相關問題