我正在使用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中的页面以自行查看问题。
非常感谢, 丰富。
答案 0 :(得分:1)
好的,我已经明白了。
基本上simpleCart.js使用的是quirksmode函数的略微修改版本,他们在cookie数据上使用了escape()和unescape()函数,IE根本不喜欢它。
我只是用原件替换它们并且它有效!