2012-02-08 6 views
1

私のアドオンは、いくつかのコンテンツスクリプトをさまざまなウェブサイトに挿入しています。 onbeforeunloadをバインドしようとしたり、window.location.reloadを呼び出すと、ウィンドウオブジェクトがいくつかのプロパティを見落としていることがわかりました。コンテンツスクリプトを使用しているときにウィンドウにプロパティが表示されない

page-modモジュール経由でコードを注入中に特定のイベント(onbeforeunloadonunloadなど)をバインドする方法はありますか?

私は、これらのプロパティが欠落していることを示す、アドオンのテストを作成しました:とにかくそれらを使用する方法についてhttps://builder.addons.mozilla.org/addon/1037497/latest/

ソリューション?

答えて

2

短い答え:

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

長い答え:セキュリティがあなたのコンテンツスクリプトはDOMと通信していない理由のためにオブジェクトを直接、例えばあなたはこのように、addEventListener()方法を使用してイベントリスナーを追加スクリプトに追加されたプロパティは表示されません。

に割り当てるか、例外をスローします DOMノードまたはWindowオブジェクトのXPCNativeWrapperon*プロパティを読み込む:technical detailsもいくつかの制限をリストアップ。 (使用 代わりaddEventListener、そしてあなたが前にreturn false;を使用した場合、あなたの ハンドラでevent.preventDefault();を使用しています。)

あなたはおそらく、むしろ自分自身を追加し、とにかくWebページのイベントハンドラを交換したくないコンテンツスクリプトで - それはaddEventListener()のことです。

Additional reading

+0

もう一度私の質問にお返事ありがとうございます!まあ、私の問題は別の情報源を持っていました。第三者図書館は私にそれを気付かせることなくaddEventListenerを置き換えました。ライブラリを削除した後、私の既存のスクリプトは魅力的なように動作し始めました。 – dvcrn

関連する問題