1

我的以下代码只会从 Firebug 发出一次警报,使用 jQuery 的追加。我很确定,只要脚本标签命中 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/ ),它确实发出了两次警报。您认为这是 Firebug 问题还是其他问题?

4

1 回答 1

0

看来我遗漏了一个重要的细节...... iframe 是一个 RTE。这意味着 iframe 已打开 designMode,这反过来又不允许 JS 在内部运行。在今天之前我对此一无所知。

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

于 2011-02-07T18:16:58.910 回答