ホームページ >ウェブフロントエンド >jsチュートリアル >コンテンツ スクリプトから Chrome API にアクセスすると「未定義のプロパティを読み取れません」というメッセージが表示されるのはなぜですか?
コンテンツ スクリプトから Chrome API にアクセスする: 「未定義のプロパティを読み取れません」エラーを解決する
から chrome.tabs などの Chrome API にアクセスするときコンテンツ スクリプトを使用すると、開発者は「未定義のプロパティを読み取れません」エラーが発生する可能性があります。このエラーは、コンテンツ スクリプトの Chrome API へのアクセスが制限されているために発生します。
質問に記載されているマニフェスト ファイルの権限セクションには、タブの権限が含まれています。ただし、この権限は、バックグラウンド スクリプト、ポップアップ スクリプト、またはサービス ワーカーのタブ API へのアクセスのみを許可します。
エラーの原因
コンテンツ スクリプトが Web に挿入されていますページには、使用できる API のセットが制限されています。これらの API には、chrome.i18n、chrome.dom、chrome.storage、および chrome.runtime と chrome.extension のサブセットが含まれます。ブラウザのタブやウィンドウを操作する chrome.tabs などの API は、コンテンツ スクリプトでは使用できません。
解決策
このエラーを解決するには、解決策はコンテンツ スクリプトからバックグラウンド スクリプトへのメッセージ。バックグラウンド スクリプトは、chrome.tabs API を使用して、コンテンツ スクリプトからのメッセージに応答できます。
実装例は次のとおりです。
コンテンツ スクリプト:
chrome.runtime.sendMessage({ action: "getTabsInfo" }, (response) => { // Process the response from the background script });
背景script:
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { if (request.action === "getTabsInfo") { chrome.tabs.query({}, (tabs) => { sendResponse({ tabs }); }); return true; } });
このアプローチを使用すると、コンテンツ スクリプトはバックグラウンド スクリプトにメッセージを送信することで Chrome API にアクセスできます。
以上がコンテンツ スクリプトから Chrome API にアクセスすると「未定義のプロパティを読み取れません」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。