javascript - 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()。
解决方案
让我猜猜,你的 cookie 包含非 ASCII 字符?这在除 iOS 之外的所有环境中都可以正常工作。一个解决方案是 URL 编码和 URL 解码。
另一种解决方案是使用js-cookie,它将透明地处理这个问题。
推荐阅读
- linkedin - 使用 LinkedIn V2 API 使用视频资产创建 UGC 帖子
- python - 如何总结不同的groupby组合?
- presto - 无法在 Presto 上使用 PostgresSQL 访问 LocalHost
- reactjs - 从 GraphQL Schema 自动生成数据导航
- node.js - Lambda 函数不能与 Alexa 技能一起使用?
- jquery - 无法在顶部使用固定菜单栏制作修复后滚动 div
- java - 以编程方式更改应用程序资源语言后,SlidingTabLayout 的选项卡语言不会更改
- javascript - 反应 keyDown 事件有时在 KeyUp 上触发
- python - Selenium:获取滚动页面的 HTML
- jquery - Jquery UI Sortable 存在