为什么是脚本节点的appendChild,而不是本机执行

时间:2011-02-03 21:05:14

标签: javascript iframe appendchild

我的以下代码只会使用jQuery的追加信息从Firebug发出一次警报。我很确定只要脚本标签碰到DOM,它就会立即执行 - 是否为iframe。

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警报。你认为这是一个Firebug问题还是别的什么?

1 个答案:

答案 0 :(得分:0)

似乎我遗漏了一个重要的细节...... iframe是一个RTE。这意味着iframe启用了designMode,这反过来又不允许JS在里面运行。在今天之前我根本不知道。

似乎似乎通过在父代中运行来运行jquery。如果我从jquery.append控制台登录窗口,它将显示父窗口而不是iframe。