ページが読み込まれるたびにJavaScriptコードの一部を自動的に実行するモバイルFirefoxプラグインを作成しようとしています。以前のバージョンのFennecのコードをいくつか作成しましたが、新しいバージョンのFennec(https://wiki.mozilla.org/Mobile/Fennec/Extensions/Electrolysis/)のマルチプロセッシングシステムでは、このコードは移植されました。私はhttp://people.mozilla.com/~mfinkle/tutorials/のチュートリアルに基づいて、ブラウザメニューでオプションが選択されるたびにコードの一部を実行するバージョンを機能させました。このソリューションは、overlay.js(メイン(アプリケーション)プロセス用)とcontent.js(子(コンテンツ)プロセス用)の2つの部分で構成されています。Overlay.jsはoverlay.xulに読み込まれ、content.jsはoverlay.jsの次のコードを介して新しいタブに読み込まれます。
window.messageManager.loadFrameScript("chrome://coin/content/content.js", true);
overlay.jsのコードは、ブラウザメニューのオプションがクリックされるたびにcontent.jsにメッセージを送信し、必要なコードが正しく実行されます(一部のスクリプトタグはページの先頭に追加されるだけです)。ただし、ページの読み込み時にコードを自動的に実行する方法がわかりません。content.jsで次のことを試しました。
function addCoin(aMessage) { ... }
// this executes the desired code every time an option is clicked in the browser menu
addMessageListener("coin:addCoin", addCoin);
// this attempts to execute the code on every page load; i.e., after this script has
been loaded for the new tab
addCoin(null);
ただし、最後のステートメントは効果がありません。次に、最後に次のステートメントを追加してみました。
sendAsyncMessage("coin:scriptLoaded", { });
このステートメントは、overlay.jsスクリプトにメッセージを送信します。このスクリプトは、このメッセージのリスナーを登録し、それに応じて、ブラウザーメニューのオプションがクリックされたときと同じメッセージ(「coin:addCoin」)を送信します。しかし、これもうまくいきませんでした。最後に、overlay.jsスクリプトがリッスンできる特定のイベント(「tabOpened」など)を探してみましたが、何も見つかりませんでした。
ページが読み込まれるたびにコードを自動的に実行する方法について誰かがアイデアを持っていますか?
よろしく、
ウィリアム