为什么Firefox插件中的console.log无法输出消息?

问题描述 投票:2回答:1

此问题与console.log in firefox is not working?不同,因为此问题与扩展调试面板有关,而不仅仅是网页控制台。

现在我在扩展调试面板中:console.info()无法输出hi消息,怎么了?

屏幕截图如下:“

也警报功能在Firefox扩展中似乎不起作用,怎么了?Firefox扩展是否禁用了某些功能?

javascript firefox-addon firefox-addon-sdk firefox-developer-tools
1个回答
4
投票

您的屏幕快照显示您已关闭“日志记录”。您需要单击“日志记录”并至少启用日志记录->日志。如果未启用该功能,则专门告诉控制台不要显示您要打印的hi

未启用日志记录:“,无需登录”

启用日志记录:“有日志记录”

但是,当进行仔细检查时,即使启用了“日志记录”,我也可以将其设置为在控制台中未打印hi的模式。当我关闭调试器的那个实例并打开一个新实例时,hi已经在控制台中打印了。另一方面,似乎任何新实例都将保留先前实例的输出。鉴于我设法将其设置为启用记录功能时未打印hi的模式,因此此新功能仍然存在一些问题。我无法第二次重复。

关于警报:不,没有禁用任何功能。您可能会遇到一个普遍的问题,即在运行的上下文/范围中未定义变量window。 Firefox浏览器扩展通常/通常在未定义window的上下文中运行。对于许多人来说,这最终成为一个问题,因为他们认为将为他们定义window

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9hYXJmcC5wbmcifQ==” alt =“未定义的窗口”>

是否定义window取决于输入当前正在运行的代码部分的方式。即使定义了window,也常常没有将其定义为期望的window(当前选项卡的window)。您可能需要获取对最近访问的窗口/选项卡的window对象的引用。

[如果存在浏览器窗口(在某些情况下,您可能正在不存在浏览器窗口的情况下运行,例如,在启动时,则可以获取对最新浏览器windowdocument和[ C0]与:

gBrowser

如果正在响应事件(例如按钮if (window === null || typeof window !== "object") { //If you do not already have a window reference, you need to obtain one: // Add/remove a "/" to comment/un-comment the code appropriate for your add-on type. /* Add-on SDK: var window = require('sdk/window/utils').getMostRecentBrowserWindow(); //*/ //* Overlay and bootstrap (from almost any context/scope): var window=Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator) .getMostRecentWindow("navigator:browser"); //*/ } if (typeof document === "undefined") { //If there is no document defined, get it var document = window.content.document; } if (typeof gBrowser === "undefined") { //If there is no gBrowser defined, get it var gBrowser = window.gBrowser; } 事件)运行代码,则可以通过以下方式获取当前的command

window

定义var window = event.view “定义窗口”

并显示window“警报”

注意:如果您想与window.alert('Hello')(电解或e10s)本地兼容,那么访问当前文档的内容将更加复杂。有一些垫片可以使您的代码在多进程Firefox上继续运行一段时间,但它们可能会(或最终会消失)。参考:

    multi-process Firefox
  1. nsIWindowMediator
  2. SDK:nsIWindowMediator
  3. SDK:Working with windows in chrome code
  4. 其中大部分是从我以前的答案中复制的,包括window/utilswindows
© www.soinside.com 2019 - 2024. All rights reserved.