firefox-addon-webextensions - WebExtensions : browser. webRequest.onCompleted 永远不会触发

标签 firefox-addon-webextensions firefox-developer-tools chrome-webrequest

我正在使用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 。您似乎在内容脚本中使用它。

  1. urlsvar filter = { urls: '<all_urls>' }需要是一个数组 ['<all_urls>'] .
  2. 'tlsInfo'在extraInfoSpec中不存在,我不知道它来自哪里。
  3. 您需要指定一个额外的 <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')

ma​​nifest.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/

相关文章:

javascript - 有没有一种明确的方法可以找出在 FF 的开发人员控制台中调用函数的位置?

asp.net-mvc - 获取 `kendo.all.min.js` 的 kendo telerik 源 map 时出现 404 错误

preload - 如何判断浏览器开发者控制台中是否预加载了资源

javascript - chrome.webRequest.onBeforeRequest.addListener 没有阻止 url 数组

cookies - 通过webRequest.onBeforeSendHeaders设置自定义 header 时, Electron 应用程序内iframe中的Cookie停止工作

javascript - 将文本从 Firefox WebExtension 中的后台脚本复制到剪贴板

firefox-addon - 如何将旧版 XPCOM 扩展迁移到 WebExtensions?

javascript - 无法在 webextensions 中使用 AsmJS

javascript - 如何在 Firefox WebExtensions 中将消息从页面脚本发送到 native 应用程序?