firefox扩展页面加载不激活

时间:2018-05-18 18:32:08

标签: javascript firefox-addon alert

我正在尝试编写一个非常简单的firefox扩展,只是在窗口加载时运行一些基本的javascript。但事件永远不会发生。我从几个不同的帖子中看到并尝试了一些东西,但它们都不适合我。

function startup() {
        alert("Hi"); 
}
window.addEventListener("load", startup, false);
document.body.style.border = "5px solid red";

我也试过这个:

function startup() {
mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                         .getInterface(Components.interfaces.nsIWebNavigation)                         .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
                         .rootTreeItem                         .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                         .getInterface(Components.interfaces.nsIDOMWindow);
    mainWindow.getBrowser().addEventListener("load", listener, false);
     Sidebar is loaded and mainwindow is ready
    }

    var listener = function(e){
        alert("Hai");
        //To remove event listener
        //mainWindow.getBrowser().removeEventListener("load",listener, false);
    }
window.addEventListener("load", startup, false);
document.body.style.border = "5px solid red";

在这两种情况下,所有页面上都有红色边框,但警报从未出现。调试窗口中也没有错误。任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

您的代码应该有效。

查看borderify示例WebExtension。如果这甚至是您使用的示例,我也不会感到惊讶,因为它是document.body.style.border = "5px solid red"分配。

在我修改borderify.js以包含您的第一个启动功能后,当我打开https://www.mozilla.org/(使用Firefox 60测试)时,我会收到警报(和红色边框):

function startup() {
  alert("Hi"); 
}
window.addEventListener("load", startup, false);
document.body.style.border = "5px solid red";

如果您仍然没有看到警报,则可以调试它。代码将在内容脚本中执行,因此您必须使用内容脚本工具箱:

  1. about:debugging中,启用加载项调试
  2. 导航至https://www.mozilla.org/
  3. 打开“工具” - > “Web Developer” - > “浏览器内容工具箱”
  4. 在调试器中,打开borderify.js
  5. 现在您可以设置断点,如果有任何异常,您将在控制台中看到它们。

    希望能帮助您缩小错误范围。