2014-10-16 1 views
0

저는 Chrome 확장 프로그램을 작업하고 있으며 파일을 열 때마다 상태를 유지해야합니다.Chrome 확장 프로그램을 열 때마다 HTML을 다시로드하지 않도록하려면 어떻게해야합니까?

예를 들어 확장 프로그램을 닫았다가 다시 열면 채워져 있어야하는 입력 요소가 있습니다.

this page에서 매니페스트의 예를 발견했습니다. 그것은 내 매니페스트에 다음을 추가하기 위해 저를 리드했지만 작동하지 않았다 :

"background": { 
"persistent": true, 
"page": "popup.html" 
} 

구멍 사이의 확장 상태를 유지하는 방법이 있나요?

답변

0

먼저 Chrome 확장 프로그램 Architecture Overview을 읽어보세요.

팝업 페이지는 팝업이 열려있는 동안에 만 존재하는 "제거 가능"페이지입니다. 당신은 그것에 영향을 줄 수 없습니다. 팝업에서 포커스를 잃으면 HTML 문서가 삭제됩니다.

대조적으로 "persistent": true이있는 배경 "페이지"(일반적으로 HTML 마크 업이 없으므로 "page" 대신에 "scripts"이 일반적으로 사용됨)가 Chrome이 실행되는 동안 존재합니다. 따라서 상태 정보를 보유 할 수 있습니다. 그러나 보이지 않는 페이지입니다.

올바른 접근 방식은 팝업 페이지를 동적으로 만들고 상태를 백그라운드 및/또는 다양한 저장소 API에 저장하고 열 때 상태를 복원하는 것입니다.

최소 예 : 링크 및 정보를

// popup.js 
// Suppose #myInput is a text input 
document.addEventListener('DOMContentLoaded', function() { 
    chrome.storage.local.get({setting: "default value"}, function(data) { 
    var inputElement = document.getElementById("myInput"); 
    inputElement.value = data.setting; 
    inputElement.addEventListener("input", function(e) { 
     chrome.storage.local.set({setting: e.target.value}); 
    }); 
    }); 
}); 
+0

감사합니다. 이 링크는 특히 도움이되었습니다. –

+0

@LeeLoftiss 재미있는 사실, 나는 그 대답의 절반에 그 링크를 주어야만한다고 느낀다. 이것은 문서의 더 중요한 부분이되어야합니다. 이것은 기본적으로 모든 것이 작동하는 방식을 이해하기위한 필수 읽기입니다. – Xan

+0

동의합니다. 확장 프로그램에 대한 모든 독본을 보았습니다. 솔루션에서 크롬 저장 장치를 사용했습니다. HTML5 로컬 저장소도 사용 하시겠습니까? 주로 Firefox 용 확장 프로그램을 만들고 싶기 때문에 주로 묻습니다. 그러면 나중에 수행해야하는 포팅이 어려워 질 것입니다. –

관련 문제