无法在IE7 / IE8中使用javascript创建cookie

时间:2011-07-19 16:02:53

标签: javascript cookies internet-explorer-8 internet-explorer-7

我正在使用simpleCart.js在网站上设置购物车。问题是不会在IE7 / IE8中创建cookie。因此,每次刷新页面都会丢失购物车中的商品。

我一直在查看代码,看起来好像simpleCart使用了cookie functions from quirksmode

我能找到的唯一信息就是为什么失败了:http://www.dynamicdrive.com/forums/showthread.php?t=27197与如何设置IE不喜欢的cookie有关。

我将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 个答案:

答案 0 :(得分:1)

好的,我已经明白了。

基本上simpleCart.js使用的是quirksmode函数的略微修改版本,他们在cookie数据上使用了escape()和unescape()函数,IE根本不喜欢它。

我只是用原件替换它们并且它有效!