跨框架脚本重用

时间:2010-11-16 10:39:43

标签: javascript scope closures unobtrusive-javascript pagespeed

我有一个在HTA(MSFT HTML应用程序)中运行的应用程序,它在整个帧中反复使用相同的脚本文件;因为它在某些地方命中9并且应用程序设置在各种服务器中,并且缓存设置为立即到期我试图在这个泥球中创造某种性能。

有没有好的'在顶部框架中加载主脚本文件然后在框架中将其排除的方法,即

--- TOP WINDOW ----

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

--- SUB Frames ----

var FrameScript = top.MainScript;
FrameScript();

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

1 个答案:

答案 0 :(得分:0)

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

|> 家长(又名TOP Frame)

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

|&GT;&GT;的子帧 在IFrame中加载SubSubFrame

|&GT;&GT;&GT;的 SubSubFrame

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

在受信任的域内深达8帧以上(在.hta中为此设置应用程序= true)

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

Nausiating和deep;谷歌做类似的事情来推迟JS加载/执行。