有两个Ext js文件,文件名为a.js和b.js,
a.js中的内容为Ext.onReady(function(){})
b.js中的内容为
Ext.onReady(function(){
function test(){}
})
2、问题:现在想在a.js中调用b.js中的test()方法,该如何调用?
3、回答:
可以把b.js中的内容改为以下方式
var Test=new Object
Ext.onReady(function(){
Test.test=function test(){}
})
这样在a.js中就可以使用test.test()来实现相应的功能了。
当然了,b.js和a.js使用时要引入同一个目标文件中,比如都引入到c.html中
很正常,不要用autoload,用autoload你设成什么也没用。要用iframehtml : '<iframe scrolling="auto" frameborder="0" width="100%" height="100%" src='+ url + '></iframe>'
您需要的是一个动态加载的功能。判断哪些JS(或类)被加载过,而只加载没有的类库。DOJO
有个动态加载的机制,但我没用过不好评论。
我的做法是用单独做一个JS包,尽可能少的依赖别的架构。用它实现动态加载。一是完成防止自身重复加载,二是有一个页面全局的注册机(一个HASH对象就可以搞定,很简单)
而程序要变的地方有两个,
首先,是所有的JS都用它加载,保障在注册机中的唯一性;
其次,在使用EXT类库的地方,需要等动态加载完以后才可以使用所有的EXT类库。类似的你可以写一个onReadyXXX()的方法。
另外,
相信您也看过动态加载JS的办法,这里还需要注意的一点是FF,IE,Safari对Document.write的JS加载办法处理不一样,IE是同步的,其它是异步的,所以在写这个动态加载类库里要由其注意。需要判断浏览器,要有不同的加载实现。