2011-05-02 6 views
2

LocalStorage에서 쓰기 및 읽기가 내 팝업 및 탭에서 정상적으로 작동합니다. 그러나, 내 배경 페이지에서 값을 추가하려고하면 전혀 쓰지 않는 것 같습니다. Chrome 개발자 도구에서 로컬 저장 용량을 새로 고치고 표시 할 값을 찾고 있습니다.Chrome 확장 로컬 저장소 : Background.html에 localstorage에 대한 액세스 권한이 없습니다.

다음 예제에서는 background.html에 대한 코드가 'lastId'가 새 북마크가 추가되면 경고에 올바르게 표시됩니다. 그러나 값은 저장되지 않습니다. 또한 알려진 값에 대한 요청은 경고 표시없이 실패한 것처럼 보입니다. (결과는 다음과 같이 두 구문을 시도 동일합니다.)

<html> 
<script> 
// Grab the id of newly created bookmarks 
chrome.bookmarks.onCreated.addListener(function(id) { 
    var lastId = id; 
    alert(lastId); 
    localStorage['lastId'] = lastId; 
      var testvalue = localStorage['309']; 
    alert(testvalue); 
      localStorage.setItem('lastId', lastId); 
    var testvalue2 = localStorage.getItem('309'); 
    alert(testvalue2); 
}); 
</script> 
</html> 

난 그냥 몇 가지 작은 문법 문제 또는 뭔가를 놓친해야하지만, 아무것도 볼 수 없습니다 계속 생각. 내 매니 페스트 선언이 올바르지 않은 경우 ID가 작동하는 것으로 경고하지 않는다고 생각합니다. 문제가 발생했습니다 ...

업데이트 : 열 때 브라우저 메모리에 영구하므로 백그라운드 페이지를 업데이트 할 때 강제로 다시로드해야한다는 사실이 드러납니다. 그래서 저장된 코드가 작동하지 않는 것처럼 보입니다. 그것은 새롭게되지 않았고 나는 당황 스럽다.

+0

질문에 답하거나 누군가 답을 올바른 것으로 표시하십시오. 감사합니다 – hitautodestruct

+0

닫기 투표가 –

답변

4

흠, 나는 몇 가지 생각할 수 있습니다.

당신은 탭과 팝업에서 작동한다고 말합니다. 이것은 매우 이상합니다 (탭을 통해 콘텐츠 스크립트를 의미하는 경우). 내용 스크립트는 삽입 된 사이트에 속한 localStorage에만 액세스 할 수 있습니다. 팝업, 배경, 옵션 페이지 및 확장 프로그램 폴더의 모든 페이지는 확장 프로그램의 자체 localStorage에만 액세스 할 수 있습니다. 그 두 개의 로컬 저장소와 완전히 분리. 그래서 아마도 당신은 잘못된 localStorage를 검사하고 있습니까?

확장 프로그램의 localStorage를 보려면 배경 또는 팝업 페이지를 검사하고 속성의 리소스 탭을 확인해야합니다. 사이트 또는 컨텐츠 스크립트 localStorage를 검사하려면 페이지에서 정기 검사기를 열어야합니다.

두 번째 순간은 귀하의 localStorage 할당이 예상 한 것과 다를 수 있습니다.

당신이 실행하는 경우 :

var lastId = 5; 
localStorage['lastId'] = lastId; 

당신은 lastId 속성에 할당 된 값 5을 얻을 것이다. 그래서 기록 된 값을 읽는 당신이 실행해야합니다 :

alert(localStorage['lastId']); //not localStorage['5'] 

당신은 로컬 스토리지 만 문자열을 저장할 수있는 다음 JSON을 통해 문자열을 비 일렬 화/직렬화 할 필요가 배열을 저장하려면

.

+0

안녕하세요 Serg, 당신의 생각에 감사드립니다. 나는 탭에 의해 내가하고있는 일이 기본 newtab 템플리트를 지나쳤다는 것을 분명히해야만했다. 따라서 newtab 페이지와 팝업은 동일한 localstorage 위치에서 성공적으로 쓰고 읽을 수 있습니다. 여기에 붙여 넣은 코드를 시도하고 확장 프로그램 목록의 링크를 통해 background.html을 검토하면 Chrome 개발자 도구가 열리고 동일한 localstorage의 내용이 표시됩니다. 따라서 해당 저장소가 background.html에 적용중인 것으로 확인되는 것으로 보입니다. 나는 매우 혼란 스럽다 ... – Korak

+0

@ 코락 크롬 12를 사용하고 있습니까? – serg

+0

아니요, 현재 11 ... – Korak

관련 문제