コンテンツ スクリプトと Chrome API: 未定義の参照エラー
Chrome 拡張機能でコンテンツ スクリプトを使用すると、「読み取れません」というエラーが発生する場合があります。 chrome.tabs などの Chrome API にアクセスしようとすると、「プロパティが未定義です」と表示されます。この問題は、マニフェストで必要な権限を付与しているにもかかわらず発生します。
Chrome API の可用性について
セキュリティ上の考慮事項により、コンテンツ スクリプトによる Chrome API へのアクセスは制限されています。コンテンツ スクリプト内では、選択された API グループのみにアクセスできます:
ブラウザのタブを操作する 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 サイトの他の関連記事を参照してください。