6

考えただけですが、IFRAMEoverを使用すると、DIV基本的にその要素がウィンドウから分離され、低速のスクリプトIFRAMEが他のフレーム/ウィンドウに影響を与えないようになりますか?

4

2 に答える 2

11

はい、最初の部分では、iframeはウィンドウをiframe内のスクリプトから「一種」分離します。ただし、親ウィンドウには引き続き。を介してアクセスできますwindow.parent

2番目の部分:いいえ、iframe内の遅いスクリプトが他のフレーム/ウィンドウに影響を与えないようにすることはありません。メインウィンドウオブジェクトとその子ノードはすべて同じスレッドで実行されます。JavaScriptはシングルスレッドです[この場合、Webworkerを無視します。とにかくそれらの間でdom要素を渡すことはできません]。したがって、parent-window / child-iframeのウィンドウオブジェクトにアクセスできる唯一の理由は、それらが同じスレッド上にあるためです。

簡単な例を提供するには:

  • main.htmlというページを作成します
  • そのページで、iframeを持っているsrc="iframe.html"
  • iframeの横に、好きなテキストが表示されたボタンがあります。気にしません。
  • iframe.htmlでは、window.onload = function(){ while(1){} };
  • iframe.htmlにアクセスします。マウスカーソルをボタンの上に置いても、応答/再描画されないことに気付くでしょう。これは、ブラウザがフリーズしているためです。

出典:
私もこのようなマルチスレッドを取得しようとしました。難しい方法を学んだ=)

于 2010-04-20T06:31:08.750 に答える
3

新しいブラウザでは、サンドボックスプロパティを使用して、ページの残りの部分からiframeを分離できます。

http://www.w3schools.com/tags/att_iframe_sandbox.asp

于 2015-11-19T04:41:49.617 に答える