2016-04-28 205 views
0

我一直在努力编写一个Chrome扩展,我需要在开始请求时捕获XHR请求,但也需要完成。到目前为止,我知道我需要使用:chrome.webRequest.onBeforeRequest捕获AngularJS XHR请求

  • chrome.webRequest.onBeforeRequest和
  • chrome.webRequest.onCompleted

这里是我的清单文件:

{ 
"name": "Koala", 
    "version": "1.0", 
    "manifest_version": 2, 
    "description": "test", 
    "browser_action": { 
    "default_icon": "koala.png", 
    "default_popup": "koala.html" 
    }, 
    "permissions": [ 
    "<all_urls>", 
    "activeTab", 
    "webRequest" 
    ], 
    "content_scripts": [{ 
    "matches": ["<all_urls>"], 
    "js": ["content.js"] 
    }], 
    "background":{ 
    "persistent": true, 
    "scripts": ["background.js"] 
    }, 
    "permissions": [ 
    "activeTab" 
    ] 
} 

的事件监听器需要进入后台脚本。下面是摘自我的background.js文件:

chrome.webRequest.onBeforeRequest.addListener(function(details){ 
    //message to context.js and koala.js 
},{urls: ["<all_urls>"],types: ["xmlhttprequest"]},[]); 

chrome.webRequest.onCompleted.addListener(function(details){ 
    //message to context.js and koala.js 
},{urls: ["<all_urls>"],types: ["xmlhttprequest"]},[]); 

我想显示的细节内容通过警报,执行console.log,消息对象,但它只是似乎该事件侦听器永远不会捕捉任何东西。我希望这段代码能够捕获任何类型的HTML片段注入,而不仅仅是AngularJS,所以我不能单独依赖AngularJS事件。我错过了什么明显的?

感谢,

阿尔

+0

对于后台脚本,您应该能够看到控制台,但您需要通过单击扩展下的inspect views标签旁边的背景脚本,从chrome:// extensions视图启动调试器。 –

+0

嗨戈登,感谢您的评论。 chrome.webRequest是未定义的。我通过访问后台页面来检查,铬对象存在但没有webRequest对象。 –

+0

我想我找到了问题。我的清单文件有两次声明的权限。当我删除第二个声明时,我的背景页面识别出chrome.webRequest对象。 –

回答

1

我看到它。 您有权限定义了您的manifest.json两次。仅使用activeTab删除第二个权限属性,您应该开展业务。