2011-02-03 8 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/)を使用し、それが二回警告しました。これはFirebugの問題なのでしょうか?

+0

あなたはFirebugのJavaScriptコンソールから上記のコードを実行していますか?それをドキュメントにハードコードすると機能しますか? –

+0

はい、JSコンソールからのものです。実際のスクリプトのコードは少し複雑ですので、FirebugとJS Fiddleのコンセプトをテストしています。私は本質的に、オブジェクトをロードするスクリプトをロードしようとしていますので、追加してから 'iframe_window.object.load();を実行します。 –

+0

その動作を再現することはできません。 – user123444555621

答えて

0

私は重要な詳細を省いたようです... iframeはRTEです。つまり、iframeのdesignModeがオンになっているため、JSが内部で実行されなくなります。私は今日前にそれについて全く知らなかった。

となりますが、JSは親で実行されてjqueryで実行されていました。私がコンソールにjquery.appendからウィンドウを記録すると、iframeではなく親ウィンドウが表示されます。

関連する問題