問題タブ [firefox-addon-webextensions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
firefox - WebExtension: タブがリロードされたときに反応する
chrome.storage.local
ポップアップがあり、状態を保存するために使用する Firefox WebExtension に取り組んでいます。これまでのところ、タブ ID を使用して特定のタブのデータを保存することができました。
現在のタブがリロードされた場合、ローカル ストレージを再初期化したいと考えています。これは、拡張機能が DOM に何らかの変更を加えた可能性があるためです。タブがリロードされると失われます。したがって、保存されている状態は正しくありません。
最初の JavaScript コードはポップアップから呼び出されます。
ページがリロードされたときにコードを実行するにはどうすればよいですか?
ありがとう
javascript - Firefox WebExtensions WebRequest の例が機能しない
ここに示されている webRequest の例に従っています。この単純な拡張機能は、すべてのリクエストをコンソールに記録する必要がありますが、それを行っていません。私の実際のコードには、ページの境界線の色を赤に変更する行が含まれており、それが機能するため、拡張コードが実行されていることがわかります。
拡張機能をロードするには、ボタンabout:debugging
を使用してロードしますLoad Temporary Add-on
これが私の実際のコードです
マニフェスト.json
ご覧のとおり、mozilla ページで指定されている例からマニフェストを変更しました。変更を加えずにその json をコピーして貼り付けると、Firefox が拡張機能をロードすることさえできないためです。
インターセプト.js
javascript - webRequest イベントにアタッチするときに、一致した URL パターンにアクセスする方法はありますか?
webRequest.onBeforeRequest
現在 webextension を構築しており、オブジェクトでイベントを使用するときにイベントが発生したときに、バックグラウンド スクリプトでどの URL 一致パターンが一致したかを知りたいと考えていURLFilter
ます。
残念ながら、コールバックdetails
は一致した Web サイトの URL を含むオブジェクトのみを受け取り、一致パターン自体は受け取りません。テスト目的で、モジュールにアクセスする方法も mdn で説明されていますが、実際に一致したパターンにアクセスする方法はありますか、それとも独自の正規表現マッチング関数を作成する必要がありますか?
javascript - JS/chrome API で任意の DOM オブジェクトに onClick リスナーを作成する方法
chrome API (JavaScript) を使用して単純な DOM インスペクターを作成したいと思います (DOM 要素をクリックすると、要素に関する情報が表示される Firefox 開発者ツールの DOM インスペクターを知っています)。私はChromeブラウザを直接使用していませんが、Firefoxで使用されているChrome APIを使用しています。次のように addEventListener を使用してイベントを要素にバインドする方法を知っています。
しかし、上記のコードのターゲットは、特定の要素です。私の質問は、どの要素がクリックされるかわからないときにアイデアを実装する方法です。つまり、リスナーをすべての DOM 要素にバインドする必要がありますか? これには、より優れた、より簡単で普遍的な解決策があることを願っています。Firefox Webextensions の実装は Chrome と似ているはずなので、google-chrome API タグを追加します。
javascript - 特定のページにログインし、ワンクリックでサブページに進む Webextension
ポップアップ、コンテンツスクリプト、バックグラウンドスクリプトの組み合わせを扱っています。残念ながら、私がそれらの中から選択したコミュニケーションは、望ましい結果を得ることができませんでした。
ブラウザメニューのアイコン/ポップアップを使用して webextension を開発する必要があります。クリックすると、ポップアップウィンドウにアイテムを含む専用メニューが開きます。ポップアップ特定のアイテムをクリックすると..タブが開き、特定のURLに移動して(パラメーターまたはPOSTを含むURLを介して)ログインし、サブページ(ポップアップアイテムテキストに固有)に移動する必要があります。
ポップアップと bg スクリプトの間、bg スクリプトとコンテンツ スクリプトなどの間でメッセージの組み合わせをいろいろ試していましたが、うまくいきませんでした。リクエストの同期にも問題がありました。これは、(windows.open 経由で) ログインしたにもかかわらず、さらにサブページを実行してロードできたためです。
これがどのように機能するか考えていますか?いくつかの短い例で最高ですか?標準の JavaScript のみを使用しました。
私の最初の試み:
マニフェスト.json
popup.html
popup.js
content.js
javascript - アドオン ページがメッセージを受信できないのはなぜですか?
アドオン (webextension) からアドオン内の html ページにメッセージを送信しようとしています。webextension API は、Chrome ブラウザーと互換性のある chrome インターフェイスを使用しています。Firefox 48 ベータ版を使用しています。
これはバックグラウンド スクリプトです (「ページの開始」メッセージが重要です)。
そのため、アドオンがモジュール「easy_options」からメッセージを受信すると、easy_options.html がそのドキュメントにロードするデータが必要であることを意味します。したがって、データを含む名前空間でメッセージを送信します。
次に、アドオン ページ easy_options.js (ここでも、chrome.runtime.onMessage リスナーが追加される 2 番目の部分が重要です):
何が起こるか: 1. メッセージ (A) をバックグラウンド リスナーに送信し、メッセージを受け入れる 2. バックグラウンド リスナーがメッセージ (B) を送信 3. アドオン オプション スクリプトがランタイムで最初のメッセージ (A) を受信します。このメッセージを処理したくない)
1. メッセージ (A) をバックグラウンド リスナーに送信し、メッセージを受け入れる 2. バックグラウンド リスナーがメッセージ (B) を送信する 3. アドオン オプション スクリプトがランタイムで最初のメッセージ (A) を受信する。このメッセージを処理したい) 4. アドオン オプション スクリプトは、runtime.OnMessage リスナーで 2 番目のメッセージ (B) を受信し、それを処理する必要があります。
質問: 4 番目のステップが発生しないのはなぜですか? なぜメッセージ (B エイリアス "initiate-page-response") が受信されないのですか?
たぶん Chrome アドオン プログラマーも助けてくれるでしょう。同様に機能するはずです。
javascript - WebExtensions を使用したユーザー デスクトップの非アクティブの検出
アドオンがあり、デスクトップで通知を発行したいのですが、ユーザーがコンピューターをアクティブに使用している場合にのみ (たとえば、マウス ポインターがブラウザー ウィンドウ内だけでなく、どこにでも移動しています)。
WebExtensions を使用してこれを行うことは可能ですか?
私はそれが次のようなものになると信じています:
script.js
/li>background.js
/li>