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

Show an alert from a Firefox extension when a browser window opens

本文关键字:Firefox 扩展 显示 窗口 浏览器      更新时间:2023-09-26

我想做一个非常简单的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。清单文件:

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

我很确定其余的代码是正确的,因为我已经添加了XUL元素用于测试目的,除了警告框之外,所有的东西都工作正常。

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

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

因此,首先等待load事件,然后给事件循环一个实际显示窗口的机会,例如
addEventListener("load", function() {
    setTimeout(function() { alert("something"); }, 0);
});

还可以:

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

代替null,你可以提供window,这将使窗口的模态和不可选择,而警报显示(就像普通警报)