Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 转换为引导:通知未定义_Javascript_Html_Firefox Addon_Firefox Addon Restartless - Fatal编程技术网

Javascript 转换为引导:通知未定义

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定义的对象(对象,承诺

我编写了一个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是的,添加窗口范围解决了问题。谢谢