2

我正在使用带有以下后台脚本的Firefox WebExtensions API

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 中看到以下输出:

来自浏览器扩展的你好世界

我没有看到任何输出 - 没有数据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"
    ]
}
4

1 回答 1

2

webRequest API 仅对后台脚本可用。您似乎在内容脚本中使用它。

  1. urlsinvar filter = { urls: '<all_urls>' }需要是一个数组['<all_urls>']
  2. 'tlsInfo'在 extraInfoSpec 中不存在,我不知道它来自哪里。
  3. 您需要在清单中指定额外的<all_urls>权限。

脚本.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')

清单.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>"
    ]
}
于 2018-06-21T14:27:05.693 回答