4

コンテクスト:

ライブのHTML、CSS、Javascriptエディターを作成しています。ここからアクセスできます。

ソースはここからアクセスできます。

質問:

DOMツリーとの間でコードを含む<script>タグを繰り返し削除および追加することなく、iframeに挿入されたjavascriptコードを実行することは可能ですか?DOMの操作はコストがかかるため、複数のDOMの操作を排除してみたいと思います。代わりに、<script>タグのtextContentを変更して、挿入した新しいコードを実行できるようにしたいと思います。

ありがとう!

4

1 に答える 1

7

を使用してもかまわない場合はeval、たとえば、iframeのウィンドウでほとんどのJavaScriptを再評価できます。

function someFunction(){                                // any function
    console.log(document.body.children);
}

someFunction();                                         // see normal output

var ifrm  = document.getElementsByTagName('iframe')[0], // your iframe
    iwind = ifrm.contentWindow;                         // the iframe's window

iwind.eval( someFunction.toString() );                  // re-evaluate function with eval from iframe
iwind.someFunction();                                   // see new output - output is in iframe's context

と比較する

iwind.someFunction = someFunction;                      // set variable
iwind.someFunction();                                   // same as calling someFunction() from parent

最も有効なJavaScript(スコープを考慮)で機能するはずですが、使用evalが悪い場合があることに注意してください。

于 2012-10-07T23:01:33.027 に答える