ページが読み込まれるたびに自動的にjavascriptコードを実行するモバイルFirefoxのプラグインを作成しようとしています。私はFennecの以前のバージョン用にいくつかのコードを書いていましたが、新しいFennecバージョン(https://wiki.mozilla.org/Mobile/Fennec/Extensions/Electrolysis/)のマルチプロセッシングシステムでは、このコードは移植されました。私はhttp://people.mozilla.com/~mfinkle/tutorials/からのチュートリアルに基づいて、ブラウザメニューでオプションが選択されたときにコードの一部を実行するバージョンの動作を得ました。この解決策は、overlay.js(メイン(アプリケーション)プロセス用)とcontent.js(チャイルド(コンテンツ)プロセス用)の2つの部分で構成されています。 content.js新しいタブのためにロードされている間Overlay.jsはoverlay.jsに次のコードを介して、overlay.xulにロードされる:モバイルFirefox(Fennec)アドオン:ページ上でコードを実行する
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);
最後のステートメントは効果がありません。この文は、このメッセージのために、それに応答して、リスナーを登録overlay.jsスクリプトへのメッセージ、単にオプションと同じメッセージが送信を送信
sendAsyncMessage("coin:scriptLoaded", { });
:その後、私は最後に次のステートメントを追加してみましたブラウザメニューの "coin:addCoin"をクリックします。しかし、これはうまくいかなかった。最後に、overlay.jsスクリプトが(「tabOpened」などのような)リッスンできるイベントを探してみましたが、何も見つかりませんでした。
ページの読み込みごとに自動的にコードを実行する方法はありますか?
よろしく、
ウィリアム
こんにちはマーク、あなたの迅速な応答に感謝(とあなたのチュートリアルに!:)。 addEventListener( "load"と "DOMContentLoaded"を使用)を試してから、コンテンツ、content.document、content.windowRootなどのコンテンツをプリペンドしてみたところ、私はcontent.jsで同様のことを試していました。何らかの理由で、 「真の」パラメータ(理由は不明)。それで、今、うまくいっています! –
content.addEventListener(...)はいくつかのイベントで機能しますが、 "content"オブジェクトが有効なときにイベントリスナーを設定し、リッスンしたいイベントをまだ開始していません。 "content"はWebページのDOMウィンドウなので、新しいページがロードされると変更されます。addEventListenerのグローバルオブジェクトを使用すると、リスナーは常に使用可能であり、「true」を使用すると、イベントがキャプチャされたことを意味します。既にバブルなので、すべてのDOMイベントが「true」を必要とするわけではありません。 –
さて、物事は私には明らかになってきています:)もう一度感謝します。 –