我没有收到 {urls: ["://www.mysite.com/.js"]}, [“阻止”]);部分。此代码可以在@Chrome extension to modify page's script includes and JS找到由于 stackoverflow 规则,将 mysite(dot)com 稍微(强制)修改为 example.com。
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
if( details.url == "http://www.example.com/js/library.js" )
return {redirectUrl: "http://www.example.com/js/library_dev.js" };
},
{urls: ["*://www.example.com/*.js"]},
["blocking"]);
最佳答案
onBeforeRequest.addEventListener
的第二个参数是一个可选的 requestFilter 对象。
它有四个附加属性
- url(可选字符串数组)
- 每个元素都是一个 URL 或 URL 模式。请参阅内容脚本匹配模式以了解 URL 模式定义。无法匹配任何 URL 的请求将被过滤掉。
- 类型(可选的字符串数组)
- 每个元素都是上述的请求类型。无法匹配任何类型的请求将被过滤掉。
- tabId(可选整数)
- 发生请求的选项卡 ID。
- windowId(可选整数)
- 发生请求的窗口的 ID。
所以urls: ["*://www.example.com/*.js"]}
正在向 onBeforeRequest 监听器添加 URL 过滤器。
这是尝试匹配对 www.example.com 域上的 javascript 文件的任何请求。使用 http 或 https
[(方案) *] :\\[(主机) www.example.com]/[(路径) *.js]强>
<url-pattern> := <scheme>://<host><path>
<scheme> := '*' | 'http' | 'https' | 'file' | 'ftp'
<host> := '*' | '*.' <any char except '/' and '*'>+
<path> := '/' <any chars>
https://developer.chrome.com/extensions/match_patterns
<小时/>第三个参数['blocking']
是一个可选的字符串数组,用于提供额外信息。这会修改 Chrome 返回回调的方式。
由于包含“阻塞”,所以回调函数是同步处理的。这意味着请求将被阻止,直到回调函数返回。因此,对于 onBeforeRequest,您可以使用它在请求发生之前取消或重定向请求。
此处提供更多信息:
关于javascript - 下面的 Chrome 扩展 javascript 代码片段到底是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36141929/