Не могу создать куки с JavaScript в IE7 / IE8 - PullRequest
0 голосов
/ 19 июля 2011

Я использую simpleCart.js для настройки корзины на сайте.Проблема в том, что куки не будут созданы в IE7 / IE8.Поэтому при каждом обновлении страницы мы теряем элементы в корзине.

Я просматривал код, и похоже, что simpleCart использует функции cookie из quirksmode

Единственная информация, которую я могу найти относительно причины ее сбоя, находится здесь: http://www.dynamicdrive.com/forums/showthread.php?t=27197 как-то связано с тем, как настроены файлы cookie, что не нравится IE.

Я изменил функцию quirksmode длявыглядеть так:

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 = "";
    value = value.replace(/\=/g, '~');
    console.log(name + "=" + value + expires + "; path=/");
    document.cookie = name + "=" + escape(value) + expires + "; path=/";
    console.log(name + "=" + escape(value) + expires + "; path=/");
}

А вот вывод:

sc_simpleCart_1=id~c2||name~British%20Curry%20Powder||price~3.5||quantity~4; expires=Thu, 18 Aug 2011 15:58:16 GMT; path=/
sc_simpleCart_1=id%7Ec2%7C%7Cname%7EBritish%2520Curry%2520Powder%7C%7Cprice%7E3.5%7C%7Cquantity%7E4; expires=Thu, 18 Aug 2011 15:58:16 GMT; path=/

Я думал, что, возможно, это было что-то, связанное с символами пробела, но я заменил их дефисами ибез разницы.

Здесь на самом деле есть живая версия сайта: http://www.bitspicy.com/bit-spicy-shop.php попробуйте добавить товар в корзину и обновите страницу в IE8, чтобы увидеть проблему самостоятельно.

Большое спасибо, Рич.

1 Ответ

1 голос
/ 19 июля 2011

ОК, я понял это.

По сути, simpleCart.js использует слегка измененную версию функций quirksmode, они использовали функции escape () и unescape () для данных cookie, и IE это совсем не понравилось.

Я просто заменил их на оригиналы, и это работает!

...