0

我有一个在 HTA(MSFT HTML 应用程序)中运行的应用程序,它在整个帧中一遍又一遍地使用相同的脚本文件;由于这在某些地方达到了 9,并且由于应用程序在各种服务器中设置,缓存设置为立即过期,所以我试图在这个泥球中开辟出某种性能。

是否有一种“好”的方法可以在顶部框架中加载主脚本文件,然后在框架中执行它,即

- - 顶部窗户 - -

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

--- SUB 帧 ----

var FrameScript = top.MainScript;
FrameScript();

以及这将如何受到窗口范围的影响(它会保持顶部窗口范围还是在框架窗口的范围内)

4

1 回答 1

0

最简单的方法似乎是给子框架一个 ID,然后用加载在主框架中的脚本动态填充它(使用 eval 使 js 运行);

IE

|>父级(又名 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 帧或超过 8 帧(在 .hta 中,您为此在帧上设置 application=true)

我使用了 top.windows[] 所以我可以检查范围。(在 firebug 中输入 console.log(top.windows))

令人作呕和深沉;谷歌做了类似延迟 JS 加载/执行的事情。

于 2010-11-16T15:29:43.917 回答