콘텐츠 스크립트에서 Chrome API에 액세스: "정의되지 않은 속성을 읽을 수 없음" 오류 해결
chrome.tabs와 같은 Chrome API에 액세스할 때 콘텐츠 스크립트를 사용하는 경우 개발자는 "정의되지 않은 속성을 읽을 수 없습니다" 오류가 발생할 수 있습니다. 이 오류는 콘텐츠 스크립트가 Chrome API에 대한 액세스가 제한되어 있기 때문에 발생합니다.
질문에 제공된 대로 매니페스트 파일의 권한 섹션에는 탭 권한이 포함되어 있습니다. 하지만 이 권한은 백그라운드 스크립트, 팝업 스크립트 또는 서비스 워커의 탭 API에 대한 액세스만 허용합니다.
오류 원인
콘텐츠 스크립트가 웹에 삽입됩니다. 페이지가 제한되어 있으며 사용할 수 있는 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 });
배경 스크립트:
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { if (request.action === "getTabsInfo") { chrome.tabs.query({}, (tabs) => { sendResponse({ tabs }); }); return true; } });
이 접근 방식을 사용하면 콘텐츠 스크립트가 백그라운드 스크립트에 메시지를 보내 Chrome API에 액세스할 수 있습니다.
위 내용은 콘텐츠 스크립트에서 Chrome API에 액세스할 때 '정의되지 않은 속성을 읽을 수 없습니다'라는 메시지가 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!