如何使用Javascript将cookie存储在本地存储中
How can I store a cookie in local storage with Javascript?
我有一个基于Javacript的Android应用程序(希望是后来的iPhone),并使用Phonegap/Applaud制作成应用程序。
不幸的是,设置和获取cookie在Android上不起作用,这可能是Android环境所特有的。有人建议我使用"本地存储"可能更可靠。
然而,直到今天早上,我对本地存储一无所知,所以我正在努力获得水。从我收集的信息来看,它基本上只是另一个使用不同语法保存数据的地方。就我的情况而言,我认为它没有给我带来任何优于cookie的优势,除了Android迫使我使用它的事实。因此,我希望我仍然可以利用我现有的代码来设置和获取cookie,而不必采用全新的方法。
当然,我可以在我的 Javascript 中进行测试以查看是否存在本地存储,如果有,请在那里存储和检索我的 cookie 数据,如果没有,那么像往常一样使用 cookie?
注意1: 我在Stack Overflow中搜索了类似的问题,有一个乍一看似乎正是我在说的,但它太简洁了,所以我无法解析它来知道我应该如何处理它。此外,我认为它假设存在我认为我没有的库和代码。我也看过这个问题,但我认为它与我所追求的相反。
注意2: 这是我当前用于获取和设置cookie的代码(从网络上的某个地方获得。直到Android问题出现之前,它是坚如磐石的可靠):
function getCookie(c_name)
{
var c_start = document.cookie.indexOf(c_name + "=");
if (document.cookie.length > 0)
{
if (c_start !== -1)
{
return getCookieSubstring(c_start, c_name);
}
}
return "";
}
function setCookie(c_name, value, expiredays)
{
var exdate = new Date();
exdate.setDate(exdate.getDate() + expiredays);
document.cookie = c_name + "=" + escape(value) +
((expiredays === null) ? "" : ";expires=" + exdate.toUTCString());
alert("this is document.cookie: " + document.cookie);
}
看看 http://diveintohtml5.info/storage.html。历史可能根本不有趣,但它至少提供了一个很好的链接列表,指向进一步阅读部分中的其他教程。
所以,现在进入你的代码。首先要提到的是localStorage
没有过期 - 它是持久的(直到用户手动清理所有内容)。如果您想使用一些较短的存储空间,您也可以使用 sessionStorage
,它具有相同的界面,但只持续到浏览器关闭。
改写代码很简单:
function getCookie(c_name) {
return localStorage.getItem(c_name);
}
function setCookie(c_name, value, expiredays) {
return localStorage.setItem(c_name, value);
}
localStorage
的行为与常规对象完全相同。
localStorage.somekey = "My data"; // set
alert(localStorage.somekey); // get
delete localStorage.somekey; // unset
localStorage
和任何其他对象之间唯一真正的区别是它是pesistic。来自同一来源的任何页面都可以访问对象中的值,如果浏览器关闭,它们甚至可以存活。
它们在数据存储方面的各个方面都优于 cookie,因为它们不会在每次请求时都发送到服务器(尽管这并不是说 cookie 毫无用处 - 两者都有其优势)。
这真的很简单;)
我使用了其他答案中的信息,所以这不是一个不同的答案,但我只是认为看到我最终得到的完整代码对其他人会有所帮助。这几乎可以作为使用 cookie 的替代品(就像我所做的那样)。它测试本地存储,如果存在,则使用该存储,如果不存在,则使用 cookie。
请注意,在实现它时,您可能希望删除警报。
function getCookie(c_name)
{
if(typeof localStorage != "undefined")
{
return localStorage.getItem(c_name);
}
else
{
var c_start = document.cookie.indexOf(c_name + "=");
if (document.cookie.length > 0)
{
if (c_start !== -1)
{
return getCookieSubstring(c_start, c_name);
}
}
return "";
}
}
function setCookie(c_name, value, expiredays)
{
var exdate = new Date();
exdate.setDate(exdate.getDate() + expiredays);
if(typeof localStorage != "undefined")
{
alert("This place has local storage!");
localStorage.setItem(c_name, value);
}
else
{
alert("No local storage here");
document.cookie = c_name + "=" + escape(value) +
((expiredays === null) ? "" : ";expires=" + exdate.toUTCString());
}
}
- 用于存储、检索和附加到url的javascript cookie
- 为什么大型网站不;I don’我更喜欢本地存储而不是cookie
- 将会话登录页存储在cookie中以进行表单解析(通过隐藏字段)
- 使用 Cookie 存储数据
- 如何将jQuery克隆的文本输入保存到cookie或html5存储中
- Javascript Security:将敏感数据存储在比cookie更安全的自调用函数中
- 为样式表切换器存储js cookie
- 使用纯js在cookie中存储多个值
- 如何在Javascript的跨域操作中存储cookie
- 通过javascript存储cookie
- 使用滑动存储cookie以删除jquery mobile
- 在用户浏览表单时存储cookie
- 在服务器上存储 Cookie 数据
- 如何在 socket.io 中存储cookie(socket.handshake.headers.cookie)
- 函数获胜't存储cookie
- 当你在iOS的主屏幕上添加一个web应用程序时,你就不能再存储cookie了
- 使用ETag在浏览器中存储cookie信息
- Phonegap/Javascript应用程序:我如何存储cookie
- 本地存储cookie会回退
- Javascript Cookie代码未存储Cookie/读取空Cookie值