【问题标题】:Make cookies not read-only使 cookie 不是只读的
【发布时间】:2014-04-04 10:17:48
【问题描述】:

制作游戏并尝试将已完成关卡的数组保存到 cookie 中。这在第一次创建 cookie 时效果很好,但是当您稍后返回继续播放时,cookie 似乎是只读的,并且不会像重新加载页面之前那样更改。

类似:var completedLevels = [1,1,0,0,0,0,0]; 在游戏的第一次运行时是可编辑的,但如果您关闭游戏并返回,则数组将锁定在之前的任何状态,即:[1,1,0,0,0,0,0] 在这种情况下。

这显然不是我真正想要的行为,所以我想知道是否有办法使 cookie 在创建时不是只读的或类似的东西。到目前为止,我的研究似乎表明 cookie 永远不会默认为只读,这让我有点怀疑,但由于我过去没有对 cookie 做太多事情,所以我很困惑!

编辑: 当你第一次玩游戏时,数组是:[0,0,0,0,...],然后用户完成第 1 级并且数组更新,所以现在是:[1,0,0,0,...],第 2 级:[1,1,0,0,...],依此类推。当一个级别完成时,该数组被放入一个 cookie:document.cookie = "completedLevels=" + this.completedArr + "; expires=Mon, 3 April 2034 20:47:11 UTC path=/";。现在假设你已经玩过第 1、2 和 4 关,所以数组看起来像这样:[1,1,0,1,...],你关闭页面,稍后再回来,期待能够玩第 3 关。当你完成那个关卡时,之前将数组更新为 [1,1,1,1,...] 的相同代码会更新代码使用的版本,但不会更新 cookie。

【问题讨论】:

  • 请向我们展示您的实际代码,因为这听起来更像是您的代码有问题(尤其是因为没有只读 cookie)。您还应该知道您不能只将数组放入 cookie 中。您必须先将数组转换为字符串,因为 cookie 只是字符串。
  • 游戏只有客户端/JS,还是有服务端代码?什么是设置cookie?什么是读取 cookie。 “锁定在以前的任何状态”是什么意思?显示代码,具体的。
  • 客户端,更多细节见编辑

标签: javascript cookies


【解决方案1】:

只需要在重新加载数据时从字符串转换回数组。 localStorage 和 cookie 都使用字符串,因此我的连接隐式地从数组转换为字符串。当您关闭页面并重新打开它时,数据作为字符串加载回来并转储到应该是数组的 var 中,这显然会导致问题。

【讨论】:

    猜你喜欢
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 2022-06-16
    相关资源
    最近更新 更多