Javascript 转换为引导:通知未定义
我编写了一个Firefox插件,它可以作为一个覆盖,但现在我将它转换为增强型(无重启)。它注册一个选项卡侦听器,然后在某些情况下关闭选项卡时打开HTML5通知 附加调试程序告诉我通知类未定义: ReferenceError:未定义通知 根据Mozilla文档,使用通知不需要包含特殊的JSM。你知道问题是什么,更重要的是,如何解决它吗 根据Mozilla文档,使用通知不需要包含特殊的JSM 这只适用于全局对象是DOM窗口的javascript上下文。仅具有ecmascript定义的对象(Javascript 转换为引导:通知未定义,javascript,html,firefox-addon,firefox-addon-restartless,Javascript,Html,Firefox Addon,Firefox Addon Restartless,我编写了一个Firefox插件,它可以作为一个覆盖,但现在我将它转换为增强型(无重启)。它注册一个选项卡侦听器,然后在某些情况下关闭选项卡时打开HTML5通知 附加调试程序告诉我通知类未定义: ReferenceError:未定义通知 根据Mozilla文档,使用通知不需要包含特殊的JSM。你知道问题是什么,更重要的是,如何解决它吗 根据Mozilla文档,使用通知不需要包含特殊的JSM 这只适用于全局对象是DOM窗口的javascript上下文。仅具有ecmascript定义的对象(对象,承诺
对象
,承诺
,…),组件
和已定义的引导加载项
检查调试器以查看该范围中到底有什么可用
因此,如果您想使用HTML5 API或导入具有类似功能的其他服务(例如,),则需要检索窗口对象(xul windows也应该可以),因为引导加载项不会自动访问全局窗口
对象。这与运行大多数JavaScript的上下文有很大不同。这件事使相当多的人措手不及。还应注意,bootstrap.js
中的代码可能在不存在窗口的情况下运行,因此您无法获得窗口
如果存在浏览器窗口,您可以通过以下方式获取对最新浏览器窗口
、文档
和gBrowser
的引用:
if (window === null || typeof window !== "object") {
//If you do not already have a window reference, you need to obtain one:
// Add a "/" to 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;
}
张贴您用于创建通知的代码我们将修复它。谢谢,我发现:我必须从调用通知转到window.notification是的,添加窗口范围解决了问题。谢谢