在使用一些js框架时,如果每一个页面都要重新下载一遍javascript文件,那绝对是很浪费的一件事。

如果是一些简单的函数,可以直接在子框架中使用 parent.fun 进行调用,可对于一些框架如extjs,这种方法往往不能奏效,有什么其他方法可以解决吗,一些网上的意见如下:

1 子页面使用iframe或frame,父页面把javascript和css 注入 子页面。
    http://extjs.com/forum/showthread.php?t=1201

   另一种方式是在子页面使用iframe或frame,父页面将所有javascript以 inline 的方式写入,子页面在打开时先将父页面中的javascript引入。
    http://matthew.delmarters.com/weblog/injecting-javascript-and-css-into-iframes/

2 子页面使用div,在打开以后先执行子页面中的javascript。
    http://extjs.com/forum/showthread.php?t=5712

3 缓存javascript

不知道各位在开发中遇到这种情况是怎么处理的,或者对以上实现方式的优劣有什么看法?多谢!

评论
hax 2007-07-30
caryl 写道
我用firebug观察net的情况,如果是同一个界面,刷新的时候确实是调用的缓存中的,而如果不是同一个url,则显示重新load了一次,不过看消耗的时间少了一些。
所以对这个问题还不是太明白。


同一个url,可能被缓存,但是也可能不缓存。但是脚本仍旧需要重新解析和运行,对象都又产生了一份。

还有你看到消耗的时间,跟这个没有关系。
caryl 2007-07-30
我用firebug观察net的情况,如果是同一个界面,刷新的时候确实是调用的缓存中的,而如果不是同一个url,则显示重新load了一次,不过看消耗的时间少了一些。
所以对这个问题还不是太明白。
s79 2007-07-29
用户的浏览器在第一次访问http://xxx/xxx.js时已经做了cache,在其他页面调用该文件时会从缓存中取,不必再做cache和研究重用的问题。

如果一个页面有访问另一个页面的权限,也可以调用其中的script。
lonelyblue 2007-07-27
有没有关于这几种方式的性能测试数据呢?
caryl 2007-07-16
hax 写道
子页面里:

with (window.top) {
...
}


这种方式跟
Ext = parent.Ext;

效果应该是一样的吧,对于简单的函数是可以的,对extjs 等就不行了。
HexUzHoNG 2007-07-16
在子页面
if (typeof(top.somescript) != "undefined") {

} else if (typeof(opener.somescript) != "undefined") {

} else if (typeof(parent.somescript) != "undefined") {

}

eval();
hax 2007-07-16
子页面里:

with (window.top) {
...
}
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

caryl
搜索本博客
博客分类
最近加入圈子
最新评论