【问题标题】:How to find if a javascript is already loaded or not?如何查找是否已加载 javascript?
【发布时间】:2015-01-25 18:31:38
【问题描述】:

我正在开发一个 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() 函数删除正文标签,如果不重新加载页面,已经加载的脚本是否也被删除了? 谢谢 我期待着你的重播......

【问题讨论】:

  • 那么,您只希望array2 包含不在array1 中的脚本src?
  • 不是那个,我想把要加载的页面的脚本src数组。在 Array2 但 Array1 包含脚本 src 的页面数组,我在其中执行 ajax 请求以加载页面。
  • 不要污染Array.prototype。不要使用 for...in 循环迭代数组。

标签: javascript php jquery html ajax


【解决方案1】:

在JS文件的最后:

window.iAmLoadedOnThisWindow = true;

在加载器部分:

if(! window.iAmLoadedOnThisWindow) {
    // append the script with some dom method
}

如果JS文件是库,测试库:if(jQuery)if(_)

【讨论】:

    猜你喜欢
    • 2014-11-30
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2021-07-20
    • 2012-07-03
    相关资源
    最近更新 更多