2013-08-28 2 views
0

localstorage의 일부 데이터가 필요한 확장 프로그램이 있습니다. 알고리즘 : 데이터가 없거나 비어 있으면 alert(); 돌아온다.Mac OS에서 Chrome 로컬 저장소가 속성을 작동하지 않습니다.

var storage = chrome.storage.local; 
storage.get('data', function(items) 
{ 
    if (!items.data.apiKey) { alert('Api key not set!'); return;} // not working 
    //nextstuff that is not working if there is no items.data.apiKey 
} 

이 코드는 Windows에서 훌륭하게 작동합니다. Mac OS에서는 경고 메시지를 표시하지 않으며, 데이터를 반환하지 않는 경우에는 더 이상 반환하지 않습니다.

+0

이 "저장"'의 추상화 localStorage' 또는 실제로 ['chrome.storage'] (https://developer.chrome.com/extensions/storage.html) API ('localStorage'가 아닌)를 사용하고 있습니까? –

+0

방금 ​​내 코드를 완료했습니다. 다시 확인하십시오. – smotru

답변

0

나는 진짜 문제는 당신이 items.data의 속성을 읽는 것입니다 코드 때문에 OS X의

실패하지 않는 것을 생각한다. 이렇게하면 items.data이 비어 있지 않은 값 (null 또는 undefined이 아님)이라고 가정합니다. 이 가정은 거짓입니다. 다음과 같이 원하는 경우, 당신은 또한 기본 값을 설정할 수 있습니다

chrome.storage.local.get('data', function(items) { 
    if (!items.data || !items.data.apiKey) { 
     alert('Api key not set!'); 
     return; 
    } 
}); 

:이 문제를 해결하려면

는 추가 검사를 추가

chrome.storage.local.get({data: 'default value'}, function(items) { 
    /* ... */ 
}); 
+0

그건 내 문제를 해결하지 못했습니다. 방금 Mac을 받고 테스트했습니다. Google Chrome 확장 프로그램이 경고를 생성하면 약 0.3 초 ​​동안 메시지가 표시됩니다. 확장 프로그램이 종료됩니다. 나는 반환이 문제일지도 모른다 생각한다? – smotru

+0

재생할 수 없습니다. 오류를 나타내는 최소한의 예제를 만듭니다. 코딩 실수가 아니라 버그라고 생각되면 http://crbug.com/new에서 알려주십시오. –

관련 문제