我正在开发一个chrome扩展来ajaxify每个非ajax网站,如维基百科。它工作正常,但无法加载js文件。所以,我编写了一个脚本,通过从标记中获取src属性来加载页面所需的js文件。但问题是,当我加载该网站的另一个页面时,每个脚本都会再次加载。因此,降低带宽是有用的。
所以,我想知道是否有任何方法可以将新脚本数组与其上一页匹配。并确定哪些脚本是新的,只加载它们。
var array1 = [];
for (var i = 0; i < jsn; i++) {
var jssrc = document.getElementsByTagName("script")[i].src;
array1.push(jssrc);
}
var array2 = [how to find out array script source of the new page]
Array.prototype.diff = function(array2) {
var ret = [];
for(i in this) {
if(array2.indexOf( this[i] ) > -1){
ret.push( this[i] );
}
}
return ret;
};
ajaxpagefetcher.load("ajax-script", "", true, array1.diff(array2);)
如何查找要加载的新页面的脚本src数组。 还有一个问题,如果我通过remove()函数删除了body标签而没有重新加载页面,那么已经加载的脚本也被删除了吗? 谢谢 我迫不及待地想要你的重播......
答案 0 :(得分:0)
在JS文件的末尾:
window.iAmLoadedOnThisWindow = true;
在装载机部分:
if(! window.iAmLoadedOnThisWindow) {
// append the script with some dom method
}
如果JS文件是库,请测试库:if(jQuery)
,if(_)
等。