コンテンツ スクリプト、背景ページ、設定ページ、ポップアップ ページを持つ Google Chrome 拡張機能を開発しています。content-script が Chrome Web Store にロードされても、onMessage リスナーが呼び出されないという難しい方法を学びました。
を実行している時点で一貫して中断できますchrome.extension.onMessage.addListener
が、リスナーが呼び出されることはありません。したがってchrome.tabs.sendMessage
、バックグラウンド ページまたはポップアップ ページから実行すると、responseCallback
関数が呼び出されることはありません。つまり、内部のロジックはresponseCallback
決して実行されません。Chrome はこれをエラー シナリオのように扱いません。リクエストを受け入れますが、その後はサイレントになります。
これをエラー ケースとして処理した場合 (chrome://
ページにメッセージを送信しようとする場合と同様)、responseCallback
は未定義の応答引数で呼び出され、エラー処理コードが実行されますが、そのような運はありません。
のコードに特別な動作を追加することもできましhttp(s)://chrome.google.com/webstore/*
たが、実行が禁止されているページを見つけるためのより公式な方法があることを望んでいました。そこの指針をいただければ幸いです。
ここで素晴らしい投稿を見つけましたが、プログラム API がないため、この質問です。
Chrome ウェブストアとchrome://
URL が特殊なケースであることは既に認識しています。ただし、私の調査によると、chrome://
URL での動作は Chrome Web ストアでの動作とは異なります。URLchrome://
では、コンテンツ スクリプトがまったく読み込まれていないように見え、sendMessage
のresponseCallback
関数が null/未定義の応答オブジェクトで呼び出されます。これはエラーを通知する API の公式の方法であり、私にとっては問題なく動作します。
私の問題は、URL をハードコーディングしなくても、Chrome Web ストアで発生したようなエラーをプログラムで検出できることです (URL は時間の経過とともに変化する可能性があります)。
ご回答ありがとうございます。