如何创建chrome(扩展)webRequest监听器?

时间:2015-01-30 18:58:32

标签: javascript google-chrome google-chrome-extension

我正在尝试创建chrome (extension) webRequest listener。但是,无论我尝试什么,我都无法访问chrome.webRequest对象 - 我的程序与Uncaught TypeError: Cannot read property 'onCompleted' of undefined崩溃。此外,在命令行上调试显示chrome.webRequest不存在。

我怀疑我在权限方面做错了,因为我没有看到许多其他stackoverflow问题或chrome bug报告存在同样的问题。

这是我的 manifest.json

{
    "manifest_version": 2,

    "name": "my extension",
    "description": "my extension description",
    "version": "1.0",

    "permissions": [
        "activeTab",
        "webRequest",
        "webRequestBlocking",
        "https://<myextension>.com/*",
    ],

    "page_action": {
        "default_icon": {                    // optional
            "19": "myextension.png",           // optional
            "38": "myextension.png"            // optional
        }
    },

    "content_scripts": [
        {
            "matches": ["https://<myextension>.com/*"],
            "css": ["myextension.css"],
            "js": ["jquery.js", "myextension.js"]
        }
    ]
}

这是我的 myextension.js

var myfilter = {
    urls: ['https://myextension.com/*']
}

function mycallback(){
    console.log('received request response');
}

chrome.webRequest.onCompleted.addListener(mycallback, myfilter);

知道我可能做错了什么吗? 我正在运行OSX 10.10.2chrome 40.0.2214.94

1 个答案:

答案 0 :(得分:1)

大多数Chrome API无法在Content Scripts中使用,包括webRequest

  

但是,内容脚本有一些限制。他们不能:

     

使用chrome.* API,但以下情况除外:

     
      
  • extensiongetURLinIncognitoContextlastErroronRequestsendRequest
  •   
  • i18n
  •   
  • runtimeconnectgetManifestgetURLidonConnectonMessagesendMessage
  •   
  • storage
  •   

您需要在后台页面中处理此事件,并使用Messaging与上下文脚本进行通信。