Javascript 为什么脚本节点的子节点不是本机执行的

Javascript 为什么脚本节点的子节点不是本机执行的,javascript,iframe,appendchild,Javascript,Iframe,Appendchild,我下面的代码只会使用jQuery的append从Firebug发出一次警报。我非常确定,每当脚本标记命中DOM时,它都会立即执行—无论是否为iframe var iframe = document.getElementById('myiframe'), iframe_window = iframe.contentWindow, iframe_head = iframe_window.document.getElementsByTagName( 'head' )[

我下面的代码只会使用jQuery的append从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(),它发出了两次警报。你认为这是Firebug问题还是其他问题?

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


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

您的意思是,您是在Firebug的JavaScript控制台中执行上述代码?如果您将其硬编码到文档中,它是否有效?是的,它来自我的JS控制台。我实际脚本中的代码有点复杂,所以我一直在Firebug和JS Fiddle中测试这个概念。我实际上是在尝试加载一个脚本来加载一个对象,这样我就可以附加并执行
iframe_window.object.load()我无法重现这种行为。是的,我想这就是答案,但我无法想象我的iframe中会有什么导致这种不同的行为。老实说,我的iframe是YUI文本编辑器,所以我想知道它们是否以一种奇怪的方式覆盖了任何本机函数。。。我将在同一页上放置另一个iframe,看看它是否工作正常。是的,在这个iframe中肯定出现了一些错误。我只是在同一个页面的firebug上运行了这个,一切都按预期进行:
var-iframe=document.createElement('iframe');iframe.src='#';iframe.id='myiframe';document.body.appendChild(iframe)后跟上面的代码