0

フレーム全体で同じスクリプト ファイルを何度も使用する HTA (MSFT HTML アプリケーション) でアプリケーションを実行しています。これは所々で 9 に達し、キャッシュがすぐに期限切れになるように設定されたさまざまなサーバー内でアプリケーションがセットアップされているため、この泥のボールである種のパフォーマンスを切り出そうとしています。

トップフレームにメインスクリプトファイルをロードし、フレーム内で実行する「良い」方法はありますか?

- - ウインドウ上部 - -

var MainScript = function(){  return (function(){ all current functions etc here })(); };

--- サブフレーム ----

var FrameScript = top.MainScript;
FrameScript();

そして、これはウィンドウスコープによってどのように影響を受けますか(トップウィンドウスコープを維持するか、フレームウィンドウのスコープ内にありますか)

4

1 に答える 1

0

最も簡単な方法は、サブフレームに ID を与えてから、マスター フレームにロードされたスクリプトを動的に入力することです (eval を使用して js を実行します)。

すなわち

|>親 (別名 TOP フレーム)

<script>top.windows = [];</script>
<script id="MyScript">
    var test = function(){ top.windows.push(window); }
</script>

|>> SubFrame は IFrame にSubSubFrame を読み込みます

|>>>サブサブフレーム

<script id="SF1">
document.getElementById("SF1").innerHTML = eval(top.window.document.getElementById("MyScript").innerHTML);
test();
</script>

これは、信頼できるドメイン内の深さ 8 フレームまでおよびそれを超えて機能します (.hta では、このフレームで application=true を設定します)。

スコープを確認できるように、top.windows[] を使用しました。(firebug の console.log(top.windows) に入力します)

吐き気と深い; Google は、JS の読み込み/実行を遅らせるために同様のことを行います。

于 2010-11-16T15:29:43.917 に答える