javascript - 当浏览器窗口打开时显示来自 Firefox 扩展的警告

标签 javascript firefox firefox-addon xul

我正在尝试制作一个非常简单的 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/

相关文章:

javascript - Reg Exp 不允许字符串中出现三个或更多连续数字

javascript - 使用 javascript 更改单选按钮旁边的文本?

firefox - 如何向 Firefox 添加自定义网络限制?

javascript - 如何在 firefox/chrome javascript 插件中存储数据和添加按钮

javascript - 制作一个容器以分布在所有窗口屏幕上

javascript - 将对象转换为函数

javascript - 滚动我自己的工具提示,Firefox 抛出未捕获的异常

xml - 为什么 Firefox 在其 Web 检查器中显示带有结束标记的空元素?

firefox - 如何为 Firefox Australis 添加工具栏按钮

javascript - Firefox 扩展面板 - 未定义要求?