2011-02-01 8 views
3

複数のJavaScriptインタープリタ(エンジン)をブラウザウィンドウの1つのタブで実行できますか?どうやって?複数のJavascriptインタープリタを1つのブラウザタブに追加

私はiframeを調べましたが、javascriptインタプリタの別のインスタンスを呼び出すことができませんでした。

+0

なぜこれを行う必要がありますか? IFrameは一般的にむしろ面倒です。あなたの問題にもっと良い解決策があるかもしれません。 – Raynos

答えて

2

各個別のページには、独自のグローバル環境があります。関連ページはさまざまな方法でリンクされています(window.parent、フレーム要素など)。親ページにタグのコンテンツとしてセカンダリページが含まれている場合(または古いスタイルのフレームセットの設定の場合、10年以上前に完了していません:-)、フレーム内のページにはそれぞれ独自のwindowオブジェクト、および独自のフレームワーク、ツールなどのコピー

document.getElementById("whatever")のようなものを実行すると、それは呼び出されたグローバルコンテキストに限定されます。同様に、各フレームには独自のJavaScript環境があり、さまざまなJavaScriptの「ネイティブ」コンストラクタの独自のコピーがあります。すなわち、あるフレームの「アレイ」は、別のフレームの「アレイ」とは異なるオブジェクトである。

@Jarrod NのWebワーカーの言葉もあなたにとって大きな関心事です。

4

Web Workersをご覧ください。 Javascriptのこれらのパーティションの実行は、非常に定義されたやりとり方法を持っています。

+2

うわー、あなたは毎日何か新しいことを学びます...私はこの+1につまずいてうれしいです – tobyodavies

0

Pointyが述べたように、それぞれの異なるページには独自のグローバル環境があります。したがって、iframeには独自のJavascript環境もあります。

メインフレームから呼び出す前に、iframeのJavascript/Webページが完全に読み込まれるのを待っていなかったため、iframeを使ったテストが失敗しました。

p.s. WebWorkersはやや複雑で、私のプロジェクトで望んだものに対してはサポートが少なくなっています。それは、しかし、将来のプロジェクトのための良い解決策に見えます。

関連する問題