2016-07-15 6 views
1

Chrome 확장 프로그램 콘텐츠 스크립트를 사용하여 페이지에 추가되는 맞춤 메뉴를 만들었습니다. 확장 기능은 훌륭하게 작동하고 메뉴는 원하는대로 나타납니다.chrome.storage에 액세스하기위한 Chrome 확장 프로그램 콘텐츠 스크립트

나는 조금 더 가서 1 또는 0 중 하나에 var에 menuToggle를 정의합니다 온/오프 스위치와 옵션 페이지를 추가 할, 그리고 VAR는 IF 조건에 부착됩니다

IF menuToggle == 1 // Do something 
ELSE // console.log("var is 0, menu not loaded"); 

"localstorage.menuToggle = 1;"을 사용하여 확장 환경에서이 작업을 할 수있었습니다.,하지만 내 확장 내에서 인스턴스에 대해서만 작동하고 콘텐츠 스크립트는이 var에 액세스 할 수 없다는 것을 알고 있습니다.

chrome.storage API에 대해 official docs을 거쳤지만 솔직히 프로그래밍 초기 단계부터 많이 이해하지 못했습니다.

chrome.storage.sync.set을 사용해야합니다.하지만이 설정을 올바르게 설정하는 방법과 콘텐츠 스크립트 내에서 데이터를 한 번 가져 오는 방법 중 하나를 얻지는 못했습니다. 나는 울부 짖는 소리와 같은 뭔가를 시도했지만 작동하지 않았다 :

chrome.storage.sync.set({'menuToggle': '1'}, function(){}); 

질문을 여기에 : 나는 sync.set 후 함수를 정의해야합니까? 그 후 아무 기능도없이 데이터를 저장할 수 있습니까? 내가 잘못 무엇

var varMenuToggleDefault = 1; 
localStorage.varMenuToggle = 1; 

$("input:checkbox[name=onoffswitch]").change(function() { 
    if ($(this).is(':checked')) { 
    localStorage.varMenuToggle = varMenuToggleDefault; 
    console.log('Switch is ON'); 
    console.log("Var is: " + localStorage.varMenuToggle); 
    } else { 
    localStorage.varMenuToggle = "0"; 
    console.log('Switch is OFF'); 
    console.log("Var is: " + localStorage.varMenuToggle); 
    } 

if (localStorage.varMenuToggle == 1) { 
// Load the menu 
} else { 
// console.log("varMenuToggle is 0. Menu NOT loaded"); 
}; 

/실종 :

우는 소리가 나는 로컬 스토리지에 사용되는 코드는?

답변

2

chrome.storage 함수는 비동기입니다. 괄호 뒤에있는 함수를 콜백 함수라고하며 작업이 완료되면 실행됩니다. 콜백 함수가 필요하지 않습니다.

데이터 복원은 약간 다릅니다. 기능이 비동기이기 때문에 다시 데이터를 얻으려면 당신은 해야는 콜백 함수를 가지고,

chrome.storage.sync.get("menuToggle", function(data) { 
    var menuToggle = data.menuToggle; 
} 

: 당신은 당신의 데이터를이 방법으로 액세스 할 수 있습니다. 콜백 함수는 사용자가 설정 한 값을 포함하는 menuToggle 속성을 가진 개체를받습니다.

+0

빠르고 쉬운 답장을 보내 주셔서 감사합니다. 내가 이해 한 바로는 ** sync.get **에 값을 가져 오도록 요청해야하기 때문에 콜백 내부의 콘텐츠 스크립트 내에 if 조건을 삽입해야합니다. var를 검색 한 후에 올바른 값을 입력해야합니다. ? 같은 뭔가 : 'chrome.storage.sync.get ("menuToggle", 기능 (데이터) { VAR menuToggle = data.menuToggle, (menuToggle == 1) {} 을 무언가를이 경우}' – SoMeGoD

+0

내가 고생 이 테스트를하지만 당신의 도움으로 나는 메뉴를 추가 할 것인지 안할 것인지 값을 설정하고 얻어 낼 수있다. 비록 이것이 최선의 방법인지 모르겠지만, 이벤트 페이지를 사용하여 처음으로 var를 설정했다. 할부 후에. – SoMeGoD

관련 문제