论坛首页 Web前端技术论坛

[讨论]如何在子页面重用javascript?

浏览 5502 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-07-16  

在使用一些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

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

   发表时间:2007-07-16  
子页面里:

with (window.top) {
...
}
0 请登录后投票
   发表时间:2007-07-16  
在子页面
if (typeof(top.somescript) != "undefined") {
   
} else if (typeof(opener.somescript) != "undefined") {
   
} else if (typeof(parent.somescript) != "undefined") {
  
}

eval();
0 请登录后投票
   发表时间:2007-07-16  
hax 写道
子页面里:

with (window.top) {
...
}


这种方式跟
Ext = parent.Ext;

效果应该是一样的吧,对于简单的函数是可以的,对extjs 等就不行了。
0 请登录后投票
   发表时间:2007-07-27  
有没有关于这几种方式的性能测试数据呢?
0 请登录后投票
   发表时间:2007-07-29  
用户的浏览器在第一次访问http://xxx/xxx.js时已经做了cache,在其他页面调用该文件时会从缓存中取,不必再做cache和研究重用的问题。

如果一个页面有访问另一个页面的权限,也可以调用其中的script。
0 请登录后投票
   发表时间:2007-07-30  
我用firebug观察net的情况,如果是同一个界面,刷新的时候确实是调用的缓存中的,而如果不是同一个url,则显示重新load了一次,不过看消耗的时间少了一些。
所以对这个问题还不是太明白。
0 请登录后投票
   发表时间:2007-07-30  
caryl 写道
我用firebug观察net的情况,如果是同一个界面,刷新的时候确实是调用的缓存中的,而如果不是同一个url,则显示重新load了一次,不过看消耗的时间少了一些。
所以对这个问题还不是太明白。


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

还有你看到消耗的时间,跟这个没有关系。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics