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

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

DDD
DDDオリジナル
2024-12-03 02:56:09334ブラウズ

Why Do I Get

コンテンツ スクリプトから 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 サイトの他の関連記事を参照してください。

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