Не сохраняет стиль страницы в cookie
У меня есть drop down меню, при выборе пункта меню меняется стиль страницы. Пытаюсь сделать, чтобы стиль страницы сохранялся в cookie после перезагрузки страницы, и в следующий раз когда пользователь открывал страницу, открывался ранее выбранный стиль. Стиль страницы у меня меняется, а вот в cookie это не запоминается. Это проблема есть только в хроме. Ниже мой код. В чем может быть проблема?
function initate() { window.selectBox = document.getElementById("myList"); var cookie = readCookie("style"); var title = cookie ? cookie : getPreferredStyleSheet(); setActiveStyleSheet(title); getTheme(); selectBox.onchange = function () { setActiveStyleSheet(this.value); setTheme(); }; } window.onload = initate; function setActiveStyleSheet(title) { var i, a, main; for (i = 0; (a = document.getElementsByTagName("link")[i]) ; i++) { if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { a.disabled = true; if (a.getAttribute("title") == title) a.disabled = false; } } createCookie("style", title, 7); } function getActiveStyleSheet() { var i, a; for (i = 0; (a = document.getElementsByTagName("link")[i]) ; i++) { if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title"); } } function getPreferredStyleSheet() { var i, a; for (i = 0; (a = document.getElementsByTagName("link")[i]) ; i++) { if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("rel").indexOf("alt") == -1 && a.getAttribute("title") ) return a.getAttribute("title"); } } function getTheme() { var storedThemeVal = readCookie('selectedTheme'); if (storedThemeVal != null && storedThemeVal != "") { for (var i = 0; i < selectBox.options.length; i++) { if (selectBox.options[i].value == storedThemeVal) { selectBox.selectedIndex = i; } } } } function setTheme() { var selectedThemeVal = selectBox.options[selectBox.selectedIndex].value; createCookie('selectedTheme', selectedThemeVal); } 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 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; } <!DOCTYPE html> <html lang="sv"> <head> <link href="css/style1.css" rel="stylesheet" type="text/css" /> <link href="css/theme1.css" title="theme1" rel="alternate stylesheet" type="text/css" /> <link href="css/theme2.css" title="theme2" rel="alternate stylesheet" type="text/css" /> <link href="css/theme3.css" title="theme3" rel="alternate stylesheet" type="text/css" /> <script type="text/javascript" src="2.js"></script> </head> <body> <div class="wrapper"> <form> <select id="myList" > <option value="style1">Default</option> <option value="theme1">Theme 1</option> <option value="theme2">Theme 2</option> <option value="theme3">Theme 3</option> </select> </form> </div> </body> </body> </html> |
sana,
Чтение-Запись куков function setcOOkie2(a,b,c) {if(c){var d = new Date();d.setDate(d.getDate()+c);}if(a && b) document.cookie = a+'='+ encodeURIComponent(b) +(c ? '; expires='+d.toUTCString() : '');else return false;} function getcOOkie2(a) {var b = new RegExp(a+'=([^;]){1,}');var c = b.exec(document.cookie);if(c) c = c[0].split('=');else return false;return c[1] ? decodeURIComponent(c[1]) : false;} Пример function setcOOkie2(a,b,c) {if(c){var d = new Date();d.setDate(d.getDate()+c);}if(a && b) document.cookie = a+'='+ encodeURIComponent(b) +(c ? '; expires='+d.toUTCString() : '');else return false;} function getcOOkie2(a) {var b = new RegExp(a+'=([^;]){1,}');var c = b.exec(document.cookie);if(c) c = c[0].split('=');else return false;return c[1] ? decodeURIComponent(c[1]) : false;} var str = 'Привет Мир!' setcOOkie2('hello_World',str,1) //Параметры: Имя кука, данные, длительность хранения в днях</script>[/HTML] //Проверка наличия кука: var a = getcOOkie2('hello_World'); //Параметры: Имя кука, возвращает данные(если кука нет => false if(a) alert(a); Если записываем в кук цифровые данные, то необходимо преобразовать в строчный формат Цитата:
Цитата:
|
Deff,
Спасибо, разобралась) |
Цитата:
--- Кстати на сайте мозиллы нормальная маленькая лайба по кукам есть. В смысле на регах, без дуркатни с итерированием. Там чуть-чуть допилить чтоб каждый раз не указывать все подряд и будет четко работать все. --- А есть в js способ получить дату из строки +30 days? |
Часовой пояс GMT +3, время: 23:41. |