У меня есть страница всплеска, где пользователь выбирает между двумя событиями. после его выбора добавляется куки-файл, поэтому они всегда получат этот опыт (или, по крайней мере, в течение следующих 30 дней). однако, если пользователь приходит на сайт напрямую к подзаголовку и обходит всплывающую страницу, они должны автоматически добавляться к опыту по умолчанию и получать cookie по умолчанию (theme1). все, кроме части cookie по умолчанию, работает.добавить файл cookie, если cookie этого имени не существует jQuery
вот что у меня есть:
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
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,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
$('.theme2').click(function() {
createCookie('chooseTheme','chosenTheme2',30)
});
$('.theme1').click(function() {
createCookie('chooseTheme','chosenTheme1',30)
});
var x = readCookie('chooseTheme');
if ($.cookie('chooseTheme') === null) {
createCookie('chooseTheme','chosenTheme1',30);
}
if (x.indexOf('chosenTheme1') > -1) {
$('body').addClass('themeOne');
} else if (x.indexOf('chosenTheme2') > -1) {
$('body').addClass('themeTwo');
}
спасибо!
Есть ли способ избежать цикла и просто сделать это при загрузке? потому что это должно иметь значение только при загрузке страницы. –
Ну, вы можете установить переменную, и если тема была прочитана из файла cookie, она изменится на «true», и по умолчанию она неверна. Через 1 минуту после того, как пользователь включится, если переменная все еще ложна, запустите сценарий, поэтому цикл проверки этой переменной не будет на 100% постоянным. Но опять же, я не вижу ничего плохого в запуске цикла. Если у вас есть что-то конкретное, что будет затронуто. – OneStig
Работает истинная/ложная переменная. хотя я не использовал этот интервал (поскольку, если вы попадаете на страницу и нет cookie по какой-либо причине, мой код породил ошибку, которую не понравилось нескольким браузерам. Спасибо! –