2013-11-26 107 views
0

我公司目前有以下的jQuery附加到按鈕COOKIE:保存狀態與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> 

這是什麼腳本是通過使樣式更改網站上的字體。當用戶點擊按鈕時,我希望將這些信息保存到cookie中(例如,如果用戶單擊按鈕一次,我希望字體發生更改[因爲當前發生] 將該選項保存到cookie中所以它會持續存在於網站的各個部分和各個會話中,並且在第二次點擊時,我希望Cookie被刪除或值被更改,以便用戶決定使用默認字體的方式同樣得到保留,等等)。

我已經嘗試過這樣做可能有六種不同的方式,但迄今爲止一直沒有成功地讓cookie保存並被正確讀取,以便字體選擇按預期持續存在。任何幫助將不勝感激。

+0

你是在本地還是在實際的網站測試呢? Cookie在本地主機的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