ホームページ >ウェブフロントエンド >jsチュートリアル >コンテンツ スクリプトで Chrome API を使用すると「未定義のプロパティを読み取れません」というメッセージが表示されるのはなぜですか?

コンテンツ スクリプトで Chrome API を使用すると「未定義のプロパティを読み取れません」というメッセージが表示されるのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-13 07:41:11132ブラウズ

Why Do I Get

コンテンツ スクリプトでの Chrome API へのアクセス: 「未定義のプロパティを読み取れません」エラーの処理

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

コンテンツ スクリプトの制限

コンテンツ スクリプトによる Chrome API 機能へのアクセスが制限されていることを理解することが重要です。主に、

  • chrome.i18n
  • chrome.dom
  • chrome.storage
  • いくつかの特定の API メソッドのサブセットにアクセスできます。からの関数chrome.runtime/chrome.extension

chrome.tabs などの API は、通常、バックグラウンド スクリプト、ポップアップ スクリプト、ブラウザ機能への広範なアクセスを備えたその他のスクリプト タイプ用に予約されています。

解決策: バックグラウンド スクリプトとの通信

コンテンツでは利用できない Chrome API 関数にアクセスするにはスクリプトを使用するには、バックグラウンド スクリプトとの通信を確立する必要があります。これには以下が含まれます。

  1. コンテンツ スクリプトからバックグラウンド スクリプトへのメッセージの送信。
  2. 必要な API 関数を使用してバックグラウンド スクリプトでメッセージを処理。
  3. 送信コンテンツ スクリプトに返される結果または応答。

これを実装する例を次に示します。ソリューション:

コンテンツ スクリプト (myScript.js):

// Send a message to the background script requesting access to chrome.tabs
chrome.runtime.sendMessage({ type: "access_tabs" }, response => {
  // Handle the response from the background script: e.g., display the result
});

バックグラウンド スクリプト (background.js):

// Background script intercepts the message from the content script
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
  if (message.type === "access_tabs") {
    // Access chrome.tabs API here and send the result back to the sender (content script)
    sendResponse({ value: chrome.tabs.getCurrent().id });
  }
});

この通信メカニズムを実装することで、コンテンツ スクリプトの機能を効果的に拡張し、Chrome API にアクセスできます。そうしないと使用できない機能。

以上がコンテンツ スクリプトで Chrome API を使用すると「未定義のプロパティを読み取れません」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。