如何在 Firefox WebExtension 中查看后台脚本的 console.log 输出?

How do I see the console.log output of a background script in a Firefox WebExtension?

有谁知道如何在后台脚本中查看 console.log() 调用的输出?我可以在内容脚本中看到相同的输出。这是我正在测试的一个简单脚本:

这是我的background.js:

console.log("Message from background.js");

这是我的manifest.json:

{
    "name": "TestBed",
    "manifest_version": 2,
    "version": "1.0",

    "background": {
        "scripts": ["background.js"]
    },

    "browser_action": {
        "default_title": "Click"
    },

    "applications": {
        "gecko": {
            "id": "testbed@example.com",
            "strict_min_version": "48.0a1"
        }
    }
}

我也在后台脚本中试过这个:

chrome.browserAction.onClicked.addListener(function() {
    console.log('Message from background.js onclicked handler');
});

我什至按照其他一些帖子的建议卸载了 Firebug,但这也没有什么区别(请注意内容脚本中的 console.log 有效)。

有关在控制台中查看扩展输出的更一般的答案,请参阅我对以下内容的回答:Google Chrome / Firefox do not see extension output in console

Add-on Debugger

这是您应该用来在 WebExtension 的后台上下文中查看脚本 运行 的控制台输出。这包括后台脚本、弹出窗口中的脚本 运行、选项页面以及从扩展加载的任何其他页面作为选项卡或 iframe 的主要 URL。您可以通过 about:debugging➞Inspect 访问附加调试器(使用与您正在调试的 WebExtension 关联的“Inspect”按钮;每个扩展都有一个单独的按钮)。这将使用调试器打开一个新选项卡。然后,您可以单击该浏览器选项卡中的控制台选项卡。此控制台将仅显示您正在检查的 WebExtension 中的内容。

Browser Console

默认情况下,浏览器控制台不再显示 WebExtensions 后台页面的输出。您可以通过选择显示“显示内容消息”来显示 all WebExtensions 的输出,当您单击window 的右上角,就在“请求”的右边。

您可以从 Browser Console 中的后台脚本中看到 console.log() 的输出。您可以使用键盘快捷键 Ctrl-Shift-JCmd-Shift-J on OSX,或从 Firefox 菜单栏:工具➞Web 开发者➞浏览器控制台。

在大于或等于 49 的版本中测试 WebExtensions 时,1 我经常滥用错误功能导致扩展程序打开浏览器控制台。 alert() 函数在后台脚本中不受支持,但会打开浏览器控制台并在控制台中输出警告文本。2 这样做将在 Firefox 版本大于或等于等于 49.0。但是,它会在早期版本的 Firefox 中引发错误。

为了测试,我经常在我的后台脚本中包含如下内容:

//* For testing, open the Browser Console
try {
    //alert() is not actually supported in Firefox WebExtension background scripts.
    //This forces the Browser Console open.
    //This abuse of a misfeature works in FF49.0b+, not in FF48.
    alert('Open the Browser Console.');
} catch(e) {
    //alert() throws an error in Firefox versions below 49.
    console.log('alert() threw an error. Probably Firefox version < 49.');
}
//*

  1. 在 Firefox 52.0a2(开发版)和 53.0a1(夜间)中有一段时间,它会抛出一个神秘的错误。在这些版本的最新版本中,这已返回到 Firefox 49 中看到的功能:打开浏览器控制台并显示传递的文本和 2(下面)中的消息。
  2. 除了传给alert()的文字外,还会单独一行输出:“alert() is not supported in background windows; please use console.log instead ."