2011-02-03 51 views
1

我的下面的代碼只會在Firebug中警告一次,使用jQuery的append。我非常肯定,腳本標記隨時會觸發DOM,它立即執行 - iframe或不。爲什麼appendChild是一個腳本節點,而不是本地執行

var iframe  = document.getElementById('myiframe'), 
    iframe_window = iframe.contentWindow, 
    iframe_head = iframe_window.document.getElementsByTagName('head')[0], 
    script  = iframe_window.document.createElement('script'); 

script.type  = 'text/javascript'; 
script.innerHTML = "alert(1);"; 

iframe_head.appendChild(script.cloneNode(true)); 
$(iframe_head).append(script.cloneNode(true)); 

爲了增加混亂我使用的jsfiddle(http://jsfiddle.net/vs8KV/)和它DID警報兩次。你認爲這是一個螢火蟲問題或其他?

+0

你是說,你是從Firebug的JavaScript控制檯執行上面的代碼?如果您將其硬編碼到文檔中,它會起作用嗎? – 2011-02-03 21:29:22

回答

0

看來我忽略了一個重要的細節... iframe是一個RTE。這意味着iframe打開了designMode,這反過來不允許JS在裏面運行。今天之前我不知道這件事。

它會似乎 JS是通過運行在父母代替運行jquery。如果我控制檯從jquery.append記錄窗口,它會顯示父窗口而不是iframe。

相關問題