我正在尝试制作一个非常简单的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元素用于测试目的,并且所有内容都与警报框分开。
答案 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
,这会使该窗口显示模式且无法选择,同时显示该警报(就像正常警报一样)