我正在尝试制作一个非常简单的 Firefox 扩展。我需要它在 Firefox 窗口打开时显示一个警告框。当我打开窗口时,该消息不会显示,但当我重新加载所有 chrome(通过扩展开发人员附加组件)时,它会显示。
我的覆盖文件:
<?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 元素用于测试目的,并且除了警告框之外的所有内容都正常工作。
最佳答案
您不能在浏览器窗口实际加载和显示之前显示 alert()
,因为警告对话框必须有一个完全初始化和可见的父窗口。
然而,您的覆盖脚本将在加载/初始化期间运行......
浏览器控制台应该显示一条错误消息说 NS_ERROR_NOT_AVAILABLE: Cannot call openModalWindow on a hidden window
(但事实证明,只有当 alert
从 中调用时加载
事件处理程序)。
因此,首先等待 load
事件,然后让事件循环有机会实际显示窗口,例如
addEventListener("load", function() {
setTimeout(function() { alert("something"); }, 0);
});
关于javascript - 当浏览器窗口打开时显示来自 Firefox 扩展的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24680750/