問題タブ [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.
javascript - ページが動的に変更されたときにFirefoxアドオンをリロードする
WebExtensions を使用して最初の Firefox アドオンを作成しようとしています (最初の拡張機能は非常に複雑です)。セッション内のすべての Google 検索の結果を処理する必要があります (セッション = 同じ Google ページを使用したクエリ)。次のコードがあります。
マニフェスト.json:
index.js:
最初の検索 (アドレス バーを使用) に必要なことを正確に実行します。ただし、アドオンは、Google ページに初めてアクセスしたときに読み込まれ、必要な処理を行った後、停止します。ページを更新するか、アドレスバーから別のクエリを作成したときにのみリロードされます。
検索フィールドを使用して別の検索を行い、もう一度処理を行うときにアドオンを再読み込みする方法を見つける必要がありますが、以前の検索の作業を失うことはありません。Cookie を使用する必要があると思いますが、まだ使用していません。
req.addEventListener("load", someFunction)
/besides の代わりに使用しようとしましreq.onreadystatechange()
たが、問題は解決しませんでした。何か案は?
ありがとうございました!
javascript - WebExtension を介してすべての埋め込み YouTube ビデオにイベント リスナーを追加する
Web サイトで HTML5 (YouTube) ビデオが再生されるたびに呼び出される関数を実装したいと考えています。APIで次のいずれかを試しました:
そしてjQueryで:
しかし、どちらも機能していません。
javascript - Chrome 拡張機能で、親コンテンツ スクリプトから特定の子 iframe のコンテンツ スクリプトにクロスオリジン メッセージを送信する方法
現在、すべてのホストへのアクセスを可能にするマニフェストを使用して Chrome 拡張機能を開発しています。バックグラウンド スクリプトは、すべてのフレームにコンテンツ スクリプトを挿入します。DOM が読み込まれると、トップ ページ/フレームのコンテンツ スクリプトが DOM ツリーをたどり始めます。Walker が iframe に遭遇すると、その iframe のウィンドウ (おそらくクロスオリジン) に関連付けられた特定のコンテンツ スクリプトにメッセージを送信して作業を開始し、このメッセージにシリアル化されたデータを含める必要があります。親ウィンドウは実行を中断し、子がウォークを完了するのを待ち、シリアル化されたデータとともに完了したことを示すメッセージを送り返します。その後、親はその作業を続行します。この問題に対して 2 つのアプローチを試みました。
frameElement.contentWindow.postMessage
: これはほとんどの場合に機能しますが、常に機能するとは限りません。iframe ウィンドウに関連付けられたコンテンツ スクリプト メッセージ イベント リスナーがメッセージを受信しないことがあります。原因は確認できていませんが、リスナーが を呼び出す前に接続されたリスナーだと思いますevent.stopImmediatePropagation()
。たとえば、yahoo のホームページ ( https://www.yahoo.com ) で、iframe ソースhttps://s.yimg.com/rq/darla/2-9-に関連付けられたコンテンツ スクリプトにメッセージを投稿すると、9/html/r-sf.html、メッセージが受信されません。これは広告関連の iframe です。メッセージのブロックは意図的なものである可能性があります。メッセージが投稿されたときにエラーは発生せず、「*」の targetOrigin を使用しています。chrome.runtime.sendMessage
: バックグラウンド ページにメッセージを送信することはできますが、メッセージをリレーするフレームをバックグラウンド ページに伝える方法がわかりません。親ウィンドウ コンテンツ スクリプトは、DOM ウォークで検出された子フレーム要素に関連付けられたクロム拡張 frameId を認識していません。そのため、バックグラウンド ページにメッセージの送信方法を伝えることができません。
ポイント 2 については、stackoverflow で見つけた 2 つの手法を試しました。
- この質問で説明されている概念の使用: 親ウィンドウで、配列内の iframe の位置を決定
window.frames
し、このインデックスを使用してバックグラウンド ページにメッセージを投稿します。バックグラウンド ページは、メッセージ データ内の目的のインデックスを使用して、すべてのフレームにメッセージをポストします。window.parent.frames 配列内のウィンドウ オブジェクトの位置を検出した iframe のみが、メッセージから受信したインデックスと一致し、そのウォークが続行されます。これは正常に機能しますが、非同期メッセージング プロセス中に配列が変更される可能性がありwindow.frames
ます (メッセージの送信後に iframe が削除されると、インデックス値が目的のフレームと一致しなくなる可能性があります)。 - ポイント 1 のインデックス値の代わりに
frameElement.name
、親ウィンドウで使用します。window.name
同じメッセージング手法を使用して、名前を子 iframe に送信し、その値と比較します。iframe要素の作成時にwindow.name
値を取得すると思います。frameElement.name
ただし、フレーム要素の作成を制御していないため、name 属性は多くの場合空の文字列であり、iframe 要素をウィンドウに一意に一致させることに依存することはできません。
DOM ツリーのウォークで見つかった iframe 要素に関連付けられたコンテンツ スクリプトにメッセージを確実に送信する方法はありますか?
google-chrome - Webextensions API を使用してプロキシにリダイレクトする
HTTP リクエストを取得してプロキシにリダイレクトするにはどうすればよいですか (ブラウザがプロキシなしであると仮定して、アドホック ベースで)。
例: http://www.stackoverflow.com/questionsにアクセスしたい。
API に関しては、この要求は次のようになります。
同じリクエストをプロキシに送信する必要がある場合は、プロキシ承認ヘッダーを追加する必要があります。また、URL をhttp://www.myproxy.comに変更する必要があります。アクセスしたい Web サイトの URL を指定するにはどうすればよいですか?
実際のコーディングに関して:
onBeforeRequest callBack では、{redirectUrl: https://www.myproxy.com }を返すことで URL を変更します。
onBeforeSendHeaders callBack では、プロキシ認証ヘッダーを追加します。Host ヘッダーはそのままにします。
コンテンツが必要なターゲット Web サイトの URL はどこでどのように指定すればよいですか?
firefox-addon - webExtentions - ajax を使用して HTML テンプレートを取得できません
このコードは Chrome では機能しますが、Firefox では機能しません
誰も手がかりを持っていますか?
前もって感謝します!
firefox - Firefox の WebExtensions オプション ページを定義する際のエラー
私は現在、新しい WebExtensions API を使用して、Firefox 用のかなり単純なアドオンに取り組んでいます。options_ui
マニフェスト ファイルで定義しようとする時点までは、すべて問題ありません。設定すると、拡張機能をロードすると次のエラーが発生します。
インストール中にエラーが発生しました:
id
またはuuid
が設定される前に getURL が呼び出されない可能性があります。
完全なマニフェスト:
が設定されていない場合、問題は発生せずoptions_ui
、拡張機能は期待どおりに機能しますが、オプション ページが欠落していることはもちろんです。
このエラーの原因は何ですか? でのみ発生するのはなぜoptions_ui
ですか?browser_action.default_popup
にも URL があり、それは機能します。
前もって感謝します。
javascript - コンテキスト メニューが機能しない Firefox アドオン WebExtensions
WebExtensions API を使用して、Firefox アドオンにコンテキスト メニューを追加しようとしています。メニュー項目のクリックをリッスンし、コンテンツ スクリプトにメッセージを送信するには、バックグラウンド スクリプトが必要です。これは私が持っているものです:
マニフェスト.json
background-scripts.js
content-script.js
メニュー項目は作成されていますが、メッセージは表示されません (Web コンソールとブラウザ コンソールの両方を確認しています)。クリック イベントが機能していないため、メッセージも送信されません。
私はこの MDN の例に従っていますが、これは機能しません。また、メニュー項目も作成しますが、何もしないので、API と MDN で何かが変更されても、わざわざドキュメントを更新しなかったと思います。
何か案は?ありがとう。
javascript - var tabs = require("sdk/tabs"); を使用できません。WebExtension アドオンで
"sdk/tabs"
私の Firefox アドオンでは使用できないようです。何が悪いのだろうか。私のbackground.jsは、この部分の後にコードの処理を停止します:
たとえば、このコードを実行すると、コンソールは「error1?」を出力します -- 上記のすべてを含みますが、そのスニペットの下からは何も出力しません。
manifest.jsonファイル"tabs"
に許可として含めました。使用するために他に何かを含める必要がありますか?"sdk/tabs"
firefox - Firefox WebExtension: タブ固有のストレージ
状態を保存するために使用する Firefox WebExtension を作成chrome.storage.local
しています。これは、拡張機能が最初に選択されたときに行います。
状態を特定のタブに制限するにはどうすればよいですか? 各タブに独自のバージョンのデータが必要です。
ありがとう