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

问题描述:

有谁知道如何在后台脚本中看到来自console.log()调用的输出?我可以在内容脚本中看到相同的输出。下面是我与测试这个简单的脚本:如何在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": "[email protected]", 
      "strict_min_version": "48.0a1" 
     } 
    } 
} 

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

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

我甚至已经卸载了Firebug,因为其他一些帖子已经提出,但这也没有什么区别(请注意内容脚本中的console.log)。

您可以从Browser Console的背景脚本中看到console.log()的输出。您可以使用键盘快捷键或者通过浏览器打开控制台,按Ctrl - - Ĵ,或Cmd的 - - Ĵ OSX上,或者从Firefox菜单栏:Tools➞Web开发者浏览器控制台。

当测试版本大于或等于49的Web扩展时,我经常滥用misfeature以导致扩展打开浏览器控制台。后台脚本不支持alert()功能,但会打开浏览器控制台并在控制台中输出警报文本。 这样做可以在大于或等于49.0的Firefox版本中使用。但是,它在早期版本的Firefox中引发错误。

为了测试,我在后台脚本通常包括类似:

//* For testing, open the Browser Console 
try{ 
    //Alert is not supported in Firefox. 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()在后台窗口中不受支持;请改用console.log。”
+0

那么当你点击一个按钮(不是弹出菜单)时,你怎么称呼“警报”? – Andreyua

+0

@Andreyua,从背景脚本?你没有。你可以用你自己的HTML打开一个窗口,使它看起来很像一个警报。你可以使它成为有效的模式(即用户必须在做任何事情之前与它进行交互),但是你不能有阻碍JavaScript执行的东西。 – Makyen

+0

不在乎:后台脚本与否,按下WebExtension按钮时如何调用正常警报?真的不可能吗? – Andreyua