首页 > 解决方案 > IOS:javascript cookie 无法在 Safari 或 chrome 等 ios 浏览器上运行

问题描述

我正在使用 js 将我的购物清单存储在 cookie 中。它在 windows 或 Macintosh 或 android 手机上运行良好,但不适用于 iphone 移动浏览器(safari 和 chrome)。在食物页面中,我将食物添加到我的列表中并刷新后页面或重定向到其他页面,cookie 为空。

我尝试了两种编写 cookie 的方法,还使用了 cookie 参数,但问题仍然存在。

这是我设置cookie的代码:

function bake_cookie(name, value) {
  var date, 
  date = new Date();
  date.setTime(date.getTime()+(30*24*60*60*1000));
  var cookie = [name, '=', JSON.stringify(value), '; domain=', "", '; 
  path=','/; expires='+date.toUTCString()+"';"].join('');
  document.cookie = cookie;
}

我的值是这样的对象数组:

[
  {
   count: 3
   food_id: 2
   kitchen_name: "kitchen 1"
   pic: "url"
   title: "food 1"
   total_price: 21000
   unit_price: 7000
  },
  {
   count: 5
   food_id: 7
   kitchen_name: "kitchen 2"
   pic: "url"
   title: "food 2"
   total_price: 25000
   unit_price: 5000
  },...
]

首先更新它,我像这样删除cookie:

function delete_cookie(name) {
  document.cookie = [name, '=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; 
  domain=', ""].join('');
}

然后我用新的输入调用 bake_cookie()。

标签: javascriptioscookies

解决方案


让我猜猜,你的 cookie 包含非 ASCII 字符?这在除 iOS 之外的所有环境中都可以正常工作。一个解决方案是 URL 编码和 URL 解码。

另一种解决方案是使用js-cookie,它将透明地处理这个问题。


推荐阅读