2011-12-19 4 views
1

페이지의 편집 된 DOM 내에 데이터를 저장하고 userscript에서 데이터에 액세스 할 필요가 있습니다. 또한 Chrome에서이 작업을 수행해야합니다. 이 내 현재 스크립트이지만, 나는 그것이 작동 얻을 수 없습니다Chrome의 사용자 스크립트가있는 LocalStorage

내부 스크립트 :

var o_shout_tabs=unsafeWindow.localStorage.getItem('va_shout_tabs')||true; 
var o_profile_damage=unsafeWindow.localStorage.getItem('va_profile_damage')||true; 
var o_allies=unsafeWindow.localStorage.getItem('va_allies')||true; 

편집 된 DOM이 항상 그러나

<script type="text/javascript"> 
    function saveData(a,b){ 
     var unsafeWindow=this['unsafeWindow']||window; 
     unsafeWindow.localStorage.setItem('va_'+a,b); 
    } 
</script> 
<input type="checkbox" value="1" onclick="saveData('shout_tabs', this.checked)"/> 
<input type="checkbox" value="1" onclick="saveData('profile_damage', this.checked)"/> 
<input type="checkbox" value="1" onclick="saveData('allies', this.checked)"/> 

, 입력에 관계없이 o_shout_tabs==true과 같이 테스트 할 때 false를 반환합니다 (단, 입력을 전혀받지 않은 경우 true를 반환 함).

답변

1

항상 false를 반환하는 것은 무엇입니까?

어쨌든 초기화 논리는 꺼져 있습니다. 부울 값의 경우 코드는 다음과 같습니다.

var o_shout_tabs=unsafeWindow.localStorage.getItem('va_shout_tabs')||true; 

은 항상 true 또는 문자열을 반환합니다.

사용이 코드 :

function getBoolFromStorageDefaultTrue (varName) { 
    var val = localStorage.getItem (varName); 
    if (val == null) 
     return true; 
    return ( (val == "false") ? false : true ); 
} 

var o_shout_tabs  = getBoolFromStorageDefaultTrue ('va_shout_tabs'); 
var o_profile_damage = getBoolFromStorageDefaultTrue ('va_profile_damage'); 
var o_allies   = getBoolFromStorageDefaultTrue ('va_allies'); 
+0

이 일! 감사합니다 =) – SnackerSWE

+0

당신을 진심으로 환영합니다. 기꺼이 도와주세요! –