2013-11-26 1 views
0

나는 현재 다음과 같은 jQuery를이 버튼에 첨부하여 쿠키와 :저장 상태 jQuery를

<script type="text/javascript"> 
jQuery('#opendyslexic-toggler').click(function() { 
var $styleSheet = jQuery('#opendyslexic'); 

$styleSheet.prop('disabled') ? $styleSheet.prop('disabled', false) 
           : $styleSheet.prop('disabled', true); 
}); 
</script> 

은 무엇이 스크립트가 수행하는 스타일 시트를 활성화하여 웹 사이트의 글꼴을 변경합니다. 사용자가 버튼을 클릭 할 때이 정보를 쿠키에 저장하고 싶습니다 (즉, 사용자가 버튼을 한 번 클릭하면 [현재 발생하는 것처럼] 에 쿠키를 저장하도록하고 싶습니다. 그래서 그것은 사이트의 여러 부분과 세션에서 지속되며, 두 번째 클릭시 쿠키가 지워지거나 값이 변경되어 기본 글꼴을 사용하는 사용자의 결정이 비슷하게 보존됩니다.

나는이 방법을 여러 가지 시도해 보았지만, 쿠키를 저장하고 제대로 읽지 못해서 글꼴 선택이 의도 한대로 지속될 수 없었다. 어떤 도움이라도 대단히 감사하겠습니다.

+0

가 로컬 또는 실제 웹 사이트에이 테스트를하고 있습니까? 로컬 호스트의 Chrome에서는 쿠키가 작동하지 않으므로 염두에 두어야 할 점이 있습니다. – brouxhaha

+0

저는 공개 된 공개 테스트 웹 사이트에서 테스트 할 것입니다. – Zyniker

답변

1

내가 대신 로컬 스토리지를 사용하는 것이 좋습니다, 다시 쿠키 떨어질 MDN에 대한 심과, 그것은 거의 크로스 브라우저의 것 :

jQuery(function($) { 
    if (localStorage.getItem('font')) { 
     $('#opendyslexic').prop('disabled', localStorage.getItem('font') == 'true'); 
    } 

    $('#opendyslexic-toggler').on('click', function() { 
     $('#opendyslexic').prop('disabled', function(_, prop) { 
       localStorage.setItem('font', !prop); 
       return !prop; 
     }); 
    }); 
}); 
+0

그게 효과가없는 것 같습니다. 내 테스트 페이지는 다음과 같습니다. http://zyniker13.com/open-dyslexic-test-page/. – Zyniker

+1

@Zyniker - 제 잘못, localStorage에서 문자열 변환을 잊어 버렸습니다. 대답을 편집했습니다. – adeneo

+0

그게 효과가있는 것 같습니다. #opendyslexic과 다른 스타일 시트 (예 : # other-stylesheet)를 전환하려면 코드를 변경하여 두 기능을 모두 수행 할 수있는 방법을 알고 있습니까? 이렇게하면 페이지가 기본 CSS와 추가 OpenDyslexic CSS를 모두로드 할 때 절반 정도의 전환 시간을 없앨 수 있습니다. – Zyniker