[英]Load local versions of the JS libraries hosted on a CDN
我想制作一个加载程序,加载我的本地JS库,而不是CDN上托管的库。 例如,加载我自己的托管在https://developers.google.com/speed/libraries/devguide?csw=1#Libraries的脚本的版本。
我想过的一种方法是监听所有请求,例如下面的示例,但是我不知道如何告诉浏览器加载库的本地版本。
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');
您对如何实现目标有正确的想法。 原则上,您可以使用appAPI.webRequest.onRequest方法来阻止页面资源并在其位置插入您自己的版本。 有潜在的副作用,例如页面加载脚本不正确可能会影响其整体功能。
以下代码按原样提供,未经测试。 另请注意,如果本地库由于其最大字符串长度而更长,则在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'
}
]
});
[ 披露 :我是Crossrider员工]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.