07.01.2013, 18:42
|
|
Кандидат Javascript-наук
|
|
Регистрация: 07.12.2012
Сообщений: 113
|
|
1. Deff, jquery.cookie и в FF кириллицу нормально выводят, насчёт эскейп-последовательности не знаю.
2. Максимально длинная строка, например:
T-Shirt:размер S:цвет белый:170:4;Jeans:размер XS:цвет синий:420:2;Shoes:размер 41:цвет хаки:560:1;T-Shirt:размер M:цвет серый:150:1;Jeans:размер S:цвет чёрный:380:1;Shoes:размер 42:цвет черный:490:2;
3. без куки хм.. я бы использовал localStorage, как Вы и предложили, очень понравился вариант, но в данном случае кук вполне достаточно
|
|
07.01.2013, 18:48
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от mi.rafaylik
|
1. Deff, jquery.cookie и в FF кириллицу нормально выводят,
|
Во всех бразерах ?
Сообщение от mi.rafaylik
|
3. без куки хм.. я бы использовал localStorage, как Вы и предложили, очень понравился вариант, но в данном случае кук вполне достаточно
|
Да использовать localStorage как куки - нет проблем - пишите с одним и тем жа ключом - полный аналог куков - но нун Нужно знать какие браузеры - иначе в старых ИЕ его еще не было( хотя есть плагин, полностью имитирующий)
суть в отправке в итоге на сервер
По второму - вопросу - судя по строке, - ИЕ 6-8 - выпадает из списка - куков -такой длины Оно не обслужит
Последний раз редактировалось Deff, 07.01.2013 в 18:52.
|
|
07.01.2013, 18:48
|
|
Кандидат Javascript-наук
|
|
Регистрация: 07.12.2012
Сообщений: 113
|
|
изменив код, задачу решил вот так:
var strCookie = ''; // инициализируем пустую строку
$('div.item').each(function(){
$(this).children('p:eq(0)').each(function(){ strCookie += $(this).html() + ":"; }); // количество характеристик всегда будет 5
$(this).children('p:eq(1)').each(function(){ strCookie += $(this).html() + ":"; });
$(this).children('p:eq(2)').each(function(){ strCookie += $(this).html() + ":"; });
$(this).children('p:eq(3)').each(function(){ strCookie += $(this).html() + ":"; });
$(this).children('p:eq(4)').each(function(){ strCookie += $(this).html() + ";"; }); // отделяем товар
});
и правильный результат:
T-Shirt:размер S:цвет белый:170:4;Jeans:размер XS:цвет синий:420:2;Shoes:размер 41:цвет хаки:560:1;
всё
ребята, спасибо, эта тема была интересной, я получил удовольствие и опыт )
Последний раз редактировалось mi.rafaylik, 07.01.2013 в 18:51.
|
|
07.01.2013, 18:51
|
|
Кандидат Javascript-наук
|
|
Регистрация: 07.12.2012
Сообщений: 113
|
|
Deff, у меня FF постоянно обновляется, т.е. я использую актуальную версию. Он правильно достаёт кириллицу с помощью jquery.cookie, насчёт более ранних версий FF не знаю
|
|
07.01.2013, 18:54
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от mi.rafaylik
|
Deff, у меня FF постоянно обновляется, т.е. я использую актуальную версию
|
Думаю тут не в длине дело , а , jquery, оно кодирует/декодирует кирилицу - проверьте запись куков максимальной длины в ИЕ
|
|
07.01.2013, 19:04
|
|
Кандидат Javascript-наук
|
|
Регистрация: 07.12.2012
Сообщений: 113
|
|
Deff, спасибо, попробую как только на Windows попаду (я работаю на Mac OS, там нет IE, но я всегда проверяю свои коды где-нибудь в другом месте), и отпишусь о результате
|
|
07.01.2013, 19:16
|
Новичок на форуме
|
|
Регистрация: 07.01.2013
Сообщений: 2
|
|
Сообщение от mi.rafaylik
|
$(this).children('p:eq(0)').each(function(){ strCookie += $(this).html() + ":"; }); // количество характеристик всегда будет 5
|
each здесь в таком случает не нужен.
Делай тогда просто так:
strCookie += $(this).children('p:eq(0)').html() + ":";
|
|
07.01.2013, 19:29
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от mi.rafaylik
|
попробую как только на Windows попад
|
Пробу(просто записать куки и считывать их на страницу) желательно провести на реальном сайте, посколь там имеются и еще кроме ваших
чо нить типо такого (Должен быть подключен jQuery и плагин куков
<div id="Mycookie"></div>
<script type="text/javascript">
$(document).ready(function() {
var a='T-Shirt:размер S:цвет белый:170:4;Jeans:размер XS:цвет синий:420:2;Shoes:размер 41:цвет хаки:560:1;T-Shirt:размер M:цвет серый:150:1;Jeans:размер S:цвет чёрный:380:1;Shoes:размер 42:цвет черный:490:2;';
$("#Mycookie").html($.cookie("My",a));
});
</script>
Последний раз редактировалось Deff, 07.01.2013 в 19:31.
|
|
24.01.2013, 01:30
|
|
Аспирант
|
|
Регистрация: 07.07.2012
Сообщений: 46
|
|
Добрый..вечер!
Подскажите, как можно сохранять 10 куки в файл, я имею ввиду что если сохраняется 11-тый, то самый старый, то есть первый удаляется а на его место становится второй (вроде карусели), задача связана точно с таким случаем, но запоминать нужно всего 10 кук и крутить по кругу.
Спасибо!
дополняю примером, а то сам не понял из прочитаного чего хочу
примерно такой код для получения куки библиотекой "jquery cookie"
function runCookie() {
var a = $.cookie("cart");
var b = a.replace(/[,]/g, '').split(":");
function allItemsListConstruct (Z) {
var str ='',zJ;
for (var i=0; i<Z.length; i++){
str+='<div>\n';
zJ = Z[i].split("|");
str+=
'<p>'+zJ[0]+'</p>'
;
str+='\n</div>'
} return str;
}
document.getElementById('st').innerHTML = allItemsListConstruct (b);
}
Задача сводиться к тому, что нужно записать куки в таком виде: 001, 002, 003, ..., 010
примерно вот так, id подставляется автоматически
<a href="javascript:cookie('+id+');">сохранить</a>
$.cookie("cart", "id");
количество записанных кук 10 шт., то есть при записи 11-той первая кука удаляется и на ее место становиться вторая и получается первой.
У меня не получается записать куки в строку и тем более недопонимаю как сделать удаление кук если их более 10 и пишем 11-тую.
Помогите реализовать такую вещь - это будет модуль последних просмотренный товаров.
Спасибо!
Последний раз редактировалось MVS, 24.01.2013 в 14:56.
|
|
30.01.2013, 22:25
|
|
Аспирант
|
|
Регистрация: 07.07.2012
Сообщений: 46
|
|
помогите удалить
сделал так, код г-но, зато рабочий
function setCokii(cookie_value) { //здесь ставить куки setCokii(id);
var x,y;
x = $.cookie("history");
if(x == null) { // если это первая
$.cookie('history', cookie_value, { expires: 7 });
} else {
y = x.split(","); // если уже есть
// это проверка на существование куки, если уже есть - то не пишем, одинаковые не нужны
if(y[0] != cookie_value && y[1] != cookie_value && y[2] != cookie_value && y[3] != cookie_value && y[4] != cookie_value && y[5] != cookie_value && y[6] != cookie_value && y[7] != cookie_value && y[8] != cookie_value && y[9] != cookie_value) {
$.cookie('history', cookie_value+','+y, { expires: 7 });
// если устанавливается 10 кука, то перезаписываем - нужно только 10 последних
if(y[9]) { rewriteCokii(); } }
}
}
// функция получения и перезаписи куки
function rewriteCokii() {
var u = $.cookie("history");
var c = u.split(",");
var f = [c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8],c[9]]; // это вроде как извращение над js но по другому не смог
$.cookie('history', f, { expires: 7 });
}
// удаление всех кук "history"
function delCokii() {
$.cookie('history', null);
}
Прошу помощи не так в модернизации кода, как в том, что не могу понять как можно удалить например 4 куку, если кто может покажите примером, но и по возможности расскажите как можно привести код к нормальному виду
Спасибо!
Последний раз редактировалось MVS, 30.01.2013 в 22:27.
|
|
|
|