콘텐츠 스크립트 및 Chrome API: 정의되지 않은 참조 오류
Chrome 확장 프로그램에서 콘텐츠 스크립트로 작업할 때 '읽을 수 없음' 오류가 발생할 수 있습니다. chrome.tabs와 같은 Chrome API에 액세스하려고 하면 정의되지 않음" 속성이 발생합니다. 이 문제는 매니페스트에서 필요한 권한을 부여했음에도 불구하고 발생합니다.
Chrome API 가용성 이해
보안 고려 사항으로 인해 콘텐츠 스크립트는 Chrome API에 대한 액세스가 제한되어 있습니다. 콘텐츠 스크립트 내에서는 특정 API 그룹에만 액세스할 수 있습니다.
API 브라우저 탭을 조작하는 chrome.tabs는 백그라운드 스크립트(또는 Manifest V3의 서비스 워커), 팝업 스크립트 및 기타 확장 컨텍스트에서만 사용할 수 있습니다.
해결책: 메시지 전달
콘텐츠 스크립트에서 사용할 수 없는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!