ホームページ > ウェブフロントエンド > jsチュートリアル > コンテンツ スクリプトが chrome.tabs にアクセスできないのはなぜですか?「未定義の参照」エラーを修正するにはどうすればよいですか?

コンテンツ スクリプトが chrome.tabs にアクセスできないのはなぜですか?「未定義の参照」エラーを修正するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-09 22:49:10
オリジナル
226 人が閲覧しました

Why Can't My Content Script Access chrome.tabs and How Do I Fix the

コンテンツ スクリプトと Chrome API: 未定義の参照エラー

Chrome 拡張機能でコンテンツ スクリプトを使用すると、「読み取れません」というエラーが発生する場合があります。 chrome.tabs などの Chrome API にアクセスしようとすると、「プロパティが未定義です」と表示されます。この問題は、マニフェストで必要な権限を付与しているにもかかわらず発生します。

Chrome API の可用性について

セキュリティ上の考慮事項により、コンテンツ スクリプトによる Chrome API へのアクセスは制限されています。コンテンツ スクリプト内では、選択された API グループのみにアクセスできます:

  • chrome.i18n
  • chrome.dom
  • chrome.storage
  • サブセットのchrome.runtime/chrome.extension

ブラウザのタブを操作する chrome.tabs などの API は、バックグラウンド スクリプト (またはマニフェスト V3 のサービス ワーカー)、ポップアップ スクリプト、およびその他の拡張機能でのみ使用できます。 contexts.

解決策:

にメッセージを渡すコンテンツ スクリプトでは使用できない Chrome API にアクセスするには、コンテンツ スクリプトからバックグラウンド スクリプトにメッセージを渡す必要があります。バックグラウンド スクリプトは API 操作を実行し、結果をコンテンツ スクリプトに送り返すことができます。

このアプローチを示すコード スニペットは次のとおりです。

// content script:

chrome.runtime.sendMessage({ type: "getTabs" }, function(response) {
  console.log(response.tabs);
});

// background script:

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  if (request.type == "getTabs") {
    chrome.tabs.query({}, function(tabs) {
      sendResponse({ tabs: tabs });
    });
  }
});
ログイン後にコピー

このアプローチに従うことで、効果的に次のことができます。セキュリティとカプセル化を維持しながら、コンテンツ スクリプト内では利用できない Chrome API にアクセスします。

以上がコンテンツ スクリプトが chrome.tabs にアクセスできないのはなぜですか?「未定義の参照」エラーを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート