2012-02-08 41 views
1

我的插件將一些內容腳本注入各種網站。試圖綁定onbeforeunload或調用window.location.reload後,我意識到窗口對象會遺漏一些屬性。使用內容腳本時在窗口中缺少屬性

有沒有辦法通過page-mod模塊注入代碼來綁定某些事件(onbeforeunload,onunload等)?

我創建了一個測試插件,顯示出這些屬性缺失:如何反正使用它們https://builder.addons.mozilla.org/addon/1037497/latest/

解決方案?

回答

2

簡短的回答:您添加使用addEventListener()方法事件偵聽器,像這樣:

window.addEventListener("beforeunload", function(event) 
{ 
    ... 
}, false); 

龍答:爲安全起見您的內容腳本不能與DOM通信對象直接,例如它看不到任何腳本添加的屬性。該technical details還列出了一些限制:

分配或在 DOM節點或Window對象的XPCNativeWrapper讀取on*屬性將拋出異常。 (使用 addEventListener相反,如果你之前使用return false;在 處理程序使用event.preventDefault();

在你可能不希望反正更換網頁的事件處理程序,而添加自己的內容腳本 - 這就是addEventListener()正在做的事情。

Additional reading

+0

感謝您再次回答我的問題!那麼,我的問題有一個不同的來源。第三方庫替換了addEventListener,而我沒有注意到它。刪除庫後,我的現有腳本開始像魅力一樣工作。 – dvcrn 2012-02-08 21:04:39