Chrome 拡張機能を作成し、popup.html ファイル内のボタンをクリックした直後に、現在の Web ページに popup.html から Web ページの DOM にアクセスするには、background.html と Popup.html の間でメッセージングを使用する必要がありますか?すべてをpopup.htmlで実行し、可能であればjQueryも使用したいと考えています。 document.body.insertBefore
メソッドにアクセスすると、現在の Web ページではなくポップアップ上の
プログラムによるインジェクションを使用して、展開ポップアップ スクリプトをこの div に追加する例をいくつか示します。
リスト V3
忘れずに、manifest.json にアクセス許可を追加してください。詳細については、他の回答を参照してください。
簡単な呼び出し:
リーリー注: Chrome 91 以前では、
func:
はfunction:
である必要があります。パラメータを指定して呼び出して結果を受け取る
Chrome 92 は
args
を実装するため、Chrome 92 が必要です。例 1:
リーリー例 2:
リーリーリスト V2
簡単な呼び出し:
リーリーパラメータを指定して呼び出し、結果を受け取ります:
リーリーこの例では、
inContent
関数を使用してコードを文字列に自動的に変換します。この利点は、IDE が構文の強調表示とリンティングを適用できることです。明らかな欠点は、ブラウザがコードの解析に時間を浪費することですが、通常は 1 ミリ秒未満であるため、無視できる程度です。問題: 拡張ページ (ポップアップ、オプション、MV2 の背景ページなど) が Web ページから分離されており、独自の DOM、
ドキュメント
、# を持っています。 ##window および chrome-extension://URL。
Service Worker には DOM/ドキュメント/ウィンドウがまったくないことに注意してください。-
拡張機能をチェックする各コンテキスト - は、独自の開発ツール を使用します。
解決策: コンテンツ スクリプト を使用して、Web ページにアクセスするか、そのコンテンツを操作します。
コンテンツ スクリプトは、拡張機能ではなく Web ページで実行されます。-
コンテンツ スクリプトはデフォルトで分離されています。- ページ コンテキスト (メイン ワールドとも呼ばれる) でコードを実行する方法を参照してください。
拡張ページにコンテンツ スクリプトをロードしないでください。 -
方法 1. 宣言的リーリー
ページの読み込み時に 1 回実行されます。その後、メッセージングを使用します。
警告! DOM 要素、マップ、セット、ArrayBuffers、クラス、関数などを送信することはできません。 JSON 互換の単純なオブジェクトと型のみを送信できるため、必要なデータを手動で抽出し、単純な配列またはオブジェクトとして渡す必要があります。ManifestV3:
拡張スクリプト (ポップアップ ウィンドウなど) では、必要に応じてコンテンツ スクリプト/関数をタブに挿入できます。権限
:
- 必須;
- ユーザーのアクション (通常はツールバーの拡張機能アイコンをクリック) に応答するのに適した理想的なシナリオ。拡張機能をインストールするときに権限の警告を表示しません。
host_permissions
に許可されたサイトを追加します。
"*://*.example.com/"
およびその他の任意の Web サイト。
"
" または
"*://*/"これらにより、拡張機能は Chrome ウェブストアの非常に遅いレビュー キューに入れられます。広範なホスト権限。
ManifestV2 と上記の違い:
でWebサイトを指定します。