簡體   English   中英

firefox擴展頁面加載不觸發

[英]firefox extension page load not firing

我正在嘗試編寫一個非常簡單的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";

在這兩種情況下,所有頁面上都有紅色邊框,但警報從不出現。調試窗口中也沒有錯誤。 任何幫助表示贊賞。 謝謝!

您的代碼應該可以工作。

看一下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開發人員”->“瀏覽器內容工具箱”
  4. 在調試器中,打開borderify.js

現在,您可以設置斷點,並且如果有任何異常,您將在控制台中看到它們。

希望可以幫助您縮小bug。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM