我正在开发一个chrome扩展程序来ajax化每个非ajax网站,如维基百科。它工作正常,但无法加载 js 文件。因此,我编写了一个脚本来加载页面所需的js文件,方法是从标签中获取src属性。但问题是当我加载该网站的另一个页面时,每个脚本都会再次加载。因此,以减少带宽为目的进行制作是没有用的。
所以,我想知道是否有任何方法可以将 new 的脚本数组与其上一页相匹配。 并确定哪些脚本是新的并仅加载它们。
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 标签,如果不重新加载页面,那么已经加载的脚本是否也被删除了?谢谢我渴望你的重播....
在 JS 文件的末尾:
window.iAmLoadedOnThisWindow = true;
在装载机部分:
if(! window.iAmLoadedOnThisWindow) {
// append the script with some dom method
}
如果JS文件是一个库,测试库:if(jQuery)
、if(_)
等。