jQuery 可以将 cookie 读/写到浏览器吗?
Posted
技术标签:
【中文标题】jQuery 可以将 cookie 读/写到浏览器吗?【英文标题】:Can jQuery read/write cookies to a browser? 【发布时间】:2010-09-10 20:19:54 【问题描述】:简单示例:我想在页面上有一些项目(如 div 或表格行),并且我想让用户单击它们以选择它们。这在 jQuery 中似乎很容易。为了在没有服务器端回发的情况下保存用户点击的项目,我认为 cookie 是完成此任务的一种简单方法。
-
在这种情况下是否假设 cookie 正常,对吗?
如果正确,jQuery API 是否有某种方式可以读取/写入比默认 javascript API 更好的 cookie 信息?
【问题讨论】:
【参考方案1】:用于设置 cookie 的默认 JavaScript “API”很简单:
document.cookie = 'mycookie=valueOfCookie;expires=DateHere;path=/'
使用 jQuery cookie 插件,例如:
$.cookie('mycookie', 'valueOfCookie')
【讨论】:
是的,写 cookie 很容易,但阅读它们有点痛苦,因为你必须拆分字符串和东西。如果您已经在使用 JQuery,那么 cookie 插件可能会很好......阅读 cookie 的一个烦人的事情是有些浏览器会删除最后的分号,而有些则不会......很高兴让其他人处理所有这些。 哦,JQuery cookie 插件只有 40 行 JS……而且您可以根据自己的需要对其进行编辑,这样您就不会觉得自己进入了抽象危险区。 按要求与 jQuery 无关。 Peter Ajtai 评论说明了为什么 casademora 要求使用 jQuery 插件而不是 Javascript。 这里是最后链接到死链接或出现故障的 plugins.jquery.com 站点的人的最新链接:github.com/carhartl/jquery-cookie【参考方案2】:您需要 cookie 插件,它为 cookie 函数提供了几个额外的签名。
$.cookie('cookie_name', 'cookie_value')
存储一个临时 cookie(仅存在于此会话的范围内,而 $.cookie('cookie_name', 'cookie_value', 'cookie_expiration")
创建一个跨会话持续存在的 cookie - 有关 JQuery cookie 插件的更多信息,请参阅http://www.stilbuero.de/2006/09/17/cookie-plugin-for-jquery/。
如果您想设置用于整个网站的 cookie,您需要像这样使用 JavaScript:
document.cookie = "name=value; expires=date; domain=domain; path=path; secure"
【讨论】:
在撰写本文时此链接似乎已失效【参考方案3】:一个新的 jQuery 插件,用于 cookie 检索和绑定表单等操作:http://plugins.jquery.com/project/cookies
【讨论】:
对于任何阅读链接过快的人,请注意 cookie 末尾的“s”,以使其与 Alex Fort 的答案不同 在撰写本文时这里有一个更好的链接github.com/carhartl/jquery-cookie @Zidad 与 Giver Of Cookies 链接的插件不同。他链接的那个现在是code.google.com/p/cookies @JAAulde 啊,我没有意识到这一点。因为链接已失效:) 谢谢!【参考方案4】:回答你的问题,是的。其他人已经回答了这部分,但您似乎也在问这是否是最好的方法。
这可能取决于你在做什么。通常,您会让用户单击他们想要购买的商品(例如订购)。然后他们会点击购买或结账按钮。然后表单将发送到一个页面并处理结果。您可以使用 cookie 完成所有这些操作,但我会发现这更困难。
您可能需要考虑在另一个主题中发布您的第二个问题。
【讨论】:
【参考方案5】:看看 jQuery 的 Cookie Plugin。
【讨论】:
【参考方案6】:你可以在这里浏览所有带有“cookie”标签的jQuery插件:
http://plugins.jquery.com/plugin-tags/cookies
那里有很多选择。
查看一个名为 jQuery Storage 的工具,它利用了 html5 的 localStorage。如果 localStorage 不可用,则默认为 cookie。但是,它不允许您设置过期时间。
【讨论】:
【参考方案7】:jQuery cookie 插件似乎无法下载。但是,您可以下载相同的 jQuery cookie 插件,并在 jQuery & Cookies (get/set/delete & a plugin) 中描述了一些改进。
【讨论】:
我也意识到,cookie插件的开发从第一次发布就停止了,不确定它是否兼容jQuery 1.4* 该插件兼容 jQuery 1.4,因为从那时起扩展语法没有改变...【参考方案8】:我已经设法编写了一个脚本,允许用户选择他/她的语言,使用来自Klaus Hartl 的 cookie 脚本。我花了几个小时的工作,我希望我能帮助别人。
【讨论】:
以上是关于jQuery 可以将 cookie 读/写到浏览器吗?的主要内容,如果未能解决你的问题,请参考以下文章
Cookie的存储读取删除修改 (cookie.Expires读取永远是零时间)