在浏览器窗口打开时显示来自Firefox扩展的警报

时间:2014-07-10 15:39:06

标签: javascript firefox firefox-addon xul

我正在尝试制作一个非常简单的Firefox扩展程序。我需要它在Firefox窗口打开时显示警告框。我打开窗口时没有显示该消息,但是当我重新加载所有chrome时(通过Extensions Developer Add-On)它会显示。

我的叠加文件:

<?xml version="1.0"?>
<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <script type="application/x-javascript" src="chrome://adTest/content/alert.js" />
</overlay>

我的脚本文件:

alert("HI!");

我的chrome.manifest文件:

content adTest content/ contentaccessible=yes
overlay chrome://browser/content/browser.xul chrome://adTest/content/adTestOverlay.xul

我很确定其余的代码是正确的,因为我已经添加了XUL元素用于测试目的,并且所有内容都与警报框分开。

2 个答案:

答案 0 :(得分:3)

在实际加载和显示浏览器窗口之前,您无法显示alert(),因为警报对话框必须具有完全初始化且可见的父窗口。 但是,您的叠加脚本将在加载/初始化期间运行...

浏览器控制台应显示错误NS_ERROR_NOT_AVAILABLE: Cannot call openModalWindow on a hidden window(但事实证明,只有在alert事件处理程序中调用load时)。

所以,首先等待load事件,然后给事件循环一个实际显示窗口的机会,例如

addEventListener("load", function() {
    setTimeout(function() { alert("something"); }, 0);
});

答案 1 :(得分:1)

也可以这样做:

Services.prompt.alert(null, 'title of alert', 'alert msg');

代替null,您可以提供window,这会使该窗口显示模式且无法选择,同时显示该警报(就像正常警报一样)