Chrome 확장 프로그램에서 작업하고있어 새로운 단계입니다. 내가 작업하고있는 확장 기능은 페이지에 HTML 사이드 바를 삽입하고 자바 스크립트 함수를 헤더에 삽입 한 다음 사용자가 사이드 바의 버튼을 눌러 내선 데이터를 작성/저장하게합니다.크롬 API 및 전역 변수에 액세스하는 삽입 된 HTML
그러나 정보를 저장하려면 localStorage를 사용하지만 localStorage는 항상 현재 웹 사이트와 관련하여 저장합니다. 확장 기능과 관련하여 localStorage를 사용하여 저장하려면 어떻게해야합니까?
크롬 확장에 일부 전역 자바 스크립트 변수를 사용하고 싶습니다. 이것들은 어디에 속해 있습니까? 저는 현재 주입 된 자바 스크립트에서 액세스 할 수 없다는 것을 알고 있습니다.
메시지 전달을 살펴본 결과 몇 가지 문제가있었습니다. 페이지의 헤더에 삽입 된 자바 스크립트의 범위에서 어떻게 작동하는지 잘 모르겠습니다. 이 예제로 작업을 시도했지만 내 확장 프로그램이 메시지를 수신하지 않는 것 같습니다.
// This function is called in the injected header javascript.
function sendToExtension() {
setTimeout(function() {
console.log('page javascript sending message');
window.postMessage({ type: 'page_js_type',
text: "Hello from the page's javascript!"},
'*' /* targetOrigin: any */);
}, 10);
}
// This is installed in a background script.
window.addEventListener('message', function(event) {
console.log('content_script.js got message:', event);
});
팁 : 'localstorage' 대신 [chrome.storage'] (https://developer.chrome.com/extensions/storage.html)를 사용하십시오. postMessage는 이미 비동기 적이므로 코드를 변경하는 데 아무런 문제가 없을 것입니다. –
흠, 유용한 API처럼 보였으므로 더 자세히 살펴 보았습니다.하지만 주입 된 HTML이 크롬 API에 액세스 할 수 없다는 문제가 여전히 있습니다. – yellow
당신은 답안에 올바른 해결책을 넣었습니다 :'postMessage'와'onmessage'를 사용하십시오. –