Javascript 加载托管在CDN上的JS库的本地版本

Javascript 加载托管在CDN上的JS库的本地版本,javascript,firefox-addon,crossrider,Javascript,Firefox Addon,Crossrider,我想制作一个加载本地JS库而不是CDN上托管的库的插件。例如,加载托管在此处的脚本的我自己的版本 我想到的一种方法是侦听所有请求,如下面的示例中所示,但我不知道如何告诉浏览器加载库的本地版本 appAPI.onRequest(function(resourceUrl, tabUrl) { if (resourceUrl.match(/.*/)) { //Load the local version of the libraries used by the website } })

我想制作一个加载本地JS库而不是CDN上托管的库的插件。例如,加载托管在此处的脚本的我自己的版本

我想到的一种方法是侦听所有请求,如下面的示例中所示,但我不知道如何告诉浏览器加载库的本地版本

appAPI.onRequest(function(resourceUrl, tabUrl) {

  if (resourceUrl.match(/.*/)) {
  //Load the local version of the libraries used by the website

  }
});
我还发现了一些类似于我想在演示版中做的事情,但我不知道这是否是一个可行的选择

appAPI.resources.addInlineJS('Resources/jquery-2.1.1.min.js');

你对如何实现你的目标有正确的想法。原则上,您可以使用该方法阻止页面资源,并在其位置注入您自己的版本。还有一个潜在的副作用,比如页面加载脚本顺序错误,这可能会影响其整体功能

以下代码按原样提供,未经测试。 还请注意,在Internet Explorer上,如果本地库由于其最大字符串长度而过长,则解决方案可能无法工作

background.js

// Monitor page resource requests
appAPI.webRequest.onRequest.addListener(function(details, opaque) {\
    // Check if the request is for loadable local resource
    for (var i = 0; i < opaque.resource.length; i++) {
        if (details.requestUrl.indexOf(opaque.resource[i].src) !== -1) {
            // Load local resource
            appAPI.resources.addInlineJS(opaque.resource[i].local);
            // Block original request
            return {
                cancel: true
            };
        }
    }
}, {
    resource: [ // List of loadable local resources
        {
            src: '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js',
            local: 'local/jquery-2.1.1.min.js'
        }
    ]
});
//监视页面资源请求
appAPI.webRequest.onRequest.addListener(函数(详细信息,不透明){\
//检查请求是否针对可加载的本地资源
对于(var i=0;i

[披露:我是一名骑手员工]

谢谢!另外,如果我尝试
src:'jquery.min.js',local:'local/jquery-2.1.1.min.js'
使其在更多情况下工作,是否可以?如何使用src完全取决于您。这个例子只是给你一个如何实现目标的想法。实际的实施取决于您。例如,您可以选择使用比所示测试条件更复杂的测试条件来查看src是否与请求的URL匹配。