我正在使用Firefox WebExtensions API具有以下 background script
var log = console.log.bind(console)
log('hello world from browser extension')
// https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/webRequest/onCompleted
var filter = { urls: '<all_urls>' }
var extraInfoSpec = ['tlsInfo', 'responseHeaders']
browser.webRequest.onCompleted.addListener(function(details){
log(`Woo got a request, here's the details!`, details)
}, filter, extraInfoSpec)
log('Added listener')
从 about:debugging
加载脚本后,我在 DevTools 中看到以下输出:
hello world from browser extension
我没有看到任何输出 - 没有来自 browser.webRequest.onCompleted.addListener
的数据,并且没有“已添加监听器”消息。
如何使 browser.webRequest.onCompleted
正常工作?
为了完整起见,我的 manifest.json
如下:
{
"manifest_version": 2,
"name": "Test extension",
"version": "1.0",
"description": "Test extension.",
"icons": {
"48": "icons/border-48.png"
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
],
"permissions": [
"webRequest",
"webRequestBlocking"
]
}
最佳答案
webRequest API仅适用于background scripts 。您似乎在内容脚本中使用它。
-
urls
在var filter = { urls: '<all_urls>' }
需要是一个数组['<all_urls>']
. -
'tlsInfo'
在extraInfoSpec中不存在,我不知道它来自哪里。 - 您需要指定一个额外的
<all_urls>
您的 list 中的许可。
script.js
var filter = { urls: ['<all_urls>'] }
var extraInfoSpec = ['responseHeaders']
browser.webRequest.onCompleted.addListener(function(details){
console.log(`Woo got a request, here's the details!`, details)
}, filter, extraInfoSpec)
console.log('Added listener')
manifest.json
{
"manifest_version": 2,
"name": "Test extension",
"version": "1.0",
"description": "Test extension.",
"icons": {
"48": "icons/border-48.png"
},
"background": {
"scripts": ["script.js"]
},
"permissions": [
"webRequest",
"webRequestBlocking",
"<all_urls>"
]
}
关于firefox-addon-webextensions - WebExtensions : browser. webRequest.onCompleted 永远不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50957695/