以下Chrome扩展程序javascript代码段的工作原理如何?

时间:2016-03-21 21:27:10

标签: javascript google-chrome webrequest

我没有得到{urls:[“://www.mysite.com/ .js”]},     [ “阻塞”]);部分。由于stackoverflow规则,可以在@ Chrome extension to modify page's script includes and JS找到这个代码,稍微(强制)修改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"]);

1 个答案:

答案 0 :(得分:1)

Page Width: 202 and Height: 464 ContentFrame Width: 202 and Height: 464 Smallest there is. 的第二个参数是可选的requestFilter对象。

它有四个额外的属性

  • 网址(可选的字符串数组)
    • 每个元素都是URL或URL模式。请参阅URL模式定义的内容脚本匹配模式。将过滤掉与任何网址无法匹配的请求。
  • 类型(可选的字符串数组)
    • 每个元素是上述请求类型。将过滤掉与任何类型无法匹配的请求。
  • tabId (可选整数)
    • 发出请求的标签的ID。
  • windowId (可选整数)
    • 发出请求的窗口的ID。

所以onBeforeRequest.addEventListener正在为onBeforeRequest监听器添加URL过滤器。

这是尝试匹配www.example.com域上的任何javascript文件请求。使用http或https

[(方案)*] :\\ [(主持人)www.example.com] / [(路径)* .js]

urls: ["*://www.example.com/*.js"]}

https://developer.chrome.com/extensions/match_patterns

第三个参数<url-pattern> := <scheme>://<host><path> <scheme> := '*' | 'http' | 'https' | 'file' | 'ftp' <host> := '*' | '*.' <any char except '/' and '*'>+ <path> := '/' <any chars> 是一个可选的字符串数组,用于获取额外信息。这会修改Chrome返回回调的方式。

由于它包含“阻塞”,因此同步处理回调函数。这意味着请求被阻止,直到回调函数返回。因此,对于onBeforeRequest,您可以使用它在请求发生之前取消或重定向。

此处提供更多信息:

https://www.chromium.org/developers/design-documents/extensions/proposed-changes/apis-under-development/notifications-of-web-request-and-navigation