2016-01-25 6 views
1

У меня есть следующий сценарий:Куки не всегда работает

function dsm_setCookie(cname, cvalue, exdays) { 
    var d = new Date(); 
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); 
    var expires = "expires=" + d.toUTCString(); 
    document.cookie = cname + "=" + cvalue + "; " + expires; 
} 

function dsm_getCookie(cname) { 
    var name = cname + "="; 
    var ca = document.cookie.split(';'); 
    for (var i = 0; i < ca.length; i++) { 
    var c = ca[i]; 
    while (c.charAt(0) == ' ') c = c.substring(1); 
    if (c.indexOf(name) == 0) return c.substring(name.length, c.length); 
    } 
    return ""; 
} 

jQuery(window).ready(function() { 
    var fontsize = dsm_getCookie('class-fontsize'); 
    jQuery('body').prepend(fontsize); // Debug 
    if (fontsize == 1) { 
    jQuery('body').addClass('fontsize'); 
    } 

    jQuery('.fontsize-small').click(function() { 
    if (jQuery('body').hasClass('fontsize')) { 
     jQuery('body').removeClass('fontsize'); 
    } 
    dsm_setCookie('class-fontsize', 0, 30); 
    }); 

    jQuery('.fontsize-large').click(function() { 
    if (!jQuery('body').hasClass('fontsize')) { 
     jQuery('body').addClass('fontsize'); 
    } 
    dsm_setCookie('class-fontsize', 1, 30); 
    }); 
}); 

Здесь я сделал пример на jsfiddle, который работает как положено. https://jsfiddle.net/9wdqp161/

Теперь, когда я добавляю скрипт к моему wordpress, он иногда работает, а иногда нет. Я пытался понять это в течение нескольких дней, но я не могу найти, что вызывает его.

+0

использовать надлежащие скобки в 'while' –

+0

Хм, попробуй. Хотя я просто скопировал скрипт cookie из w3. – DaMaGeX

+0

@UnknownUser Кажется, не работает, к сожалению. – DaMaGeX

ответ

1

Alternative

localstorage

Вы можете использовать локальное хранилище вместо cookie и очень проста в использовании.

например.

localStorage.setItem('firstname', 'kaushik'); 
localStorage.getItem('firstname'); 
// output - kaushik 
0

При использовании куков, вы должны заботиться о ниже пунктах:

  • Не превышать более чем на 50 куков для одного домена.
  • Максимальный размер файлов cookie составляет около 4 тыс. На домен. то есть размер , все файлы cookie не должны превышать 4 тыс. Это означает, что у вас может быть 1 cookie 4k или 2 cookies из 2k и т. Д.

Это может вам помочь.

+0

Хм, я не думаю, что дошел до предела. Разве это не остановит работу? Иногда он по-прежнему работает. – DaMaGeX

0

Я бы попробуйте добавить path к вашему определению печенья в dsm_setCookie():

document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/'; 

Вполне возможно, что куки недобросовестный текущий путь текущего местоположения документа ... который не может быть корнем вашего сайта.

+0

Попытался изменить код с помощью вашего фрагмента. Пока не повезло. Странно, что иногда это работает, а иногда и нет. – DaMaGeX

Смежные вопросы