为什么 Firefox 和 Chromium 之间的 cookie 行为不同
Why cookies behavior differ between Firefox and Chromium?
我正在使用docCookies对象在此应用程序上设置cookie。
我正在测试的功能是这个:
displayWelcomeMessage = function(idElement){
var cookieName = 'username';
alert(docCookies.getItem(cookieName)); // NULL when cookie not set
var defaultName = "SweetAnon",
daysToExpire = 1,
username = docCookies.getItem(cookieName);
// Check if cookie was already set (user "logged")
if (username != null && username.trim() != "") {
displayUsername(idElement, username);
} else {
username = prompt("If you enter your name'nI'll try to remember you :)");
if (username != null && username.trim() != "") {
docCookies.setItem(cookieName, username, daysToExpire);
displayUsername(idElement, username);
} else {
displayUsername(idElement, defaultName);
}
}
alert(docCookies.getItem(cookieName)); // Username or 'SweetAnon'
};
这里有两个警报,它们在Firefox v28和Chromium v33.0.1750.152之间打印不同的结果。如果我输入foobar
作为username
,我会得到以下结果:
- 火狐打印
null
然后foobar
. - 铬 它打印
null
然后再次null
。
我认为火狐的行为是正确的。但是我应该怎么做才能让它在 Chromium 上运行?
解决方案是将 cookie 值分配给对象而不是变量:
displayWelcomeMessage = function(idElement)
{
var cookieName = 'username',
defaultName = "SweetAnon",
daysToExpire = 1;
/* assign username as a property of the current function */
this.username = docCookies.getItem(cookieName);
alert(docCookies.getItem(cookieName)); // NULL when cookie not set
// Check if cookie was already set (user "logged")
if (this.username != null && this.username.trim() != "")
{
displayUsername(idElement, this.username);
}
else
{
this.username = prompt("If you enter your name'nI'll try to remember you :)");
if (this.username != null && this.username.trim() != "")
{
docCookies.setItem(cookieName, this.username, daysToExpire);
displayUsername(idElement, username);
}
else
{
displayUsername(idElement, defaultName);
}
}
alert(docCookies.getItem(cookieName)); // Username or 'SweetAnon'
};
引用
- 哪些设计模式利用了 JavaScript 的提升行为?
- Chrome 和 Firefox 中的 JavaScript 提升
- JavaScript 范围和提升
- 有条件地定义函数
相关文章:
- 为什么这在IE中的工作方式与在Firefox中不同
- 在jquery中为显示/隐藏设置cookie
- 清除firefox中的cookie也会删除localStorage吗
- Cookie不适用于Chrome,但它'使用Firefox(localhost)没问题
- 通过 ff-addon-sdk 访问 Firefox cookie
- 删除cookie(PHP,JS)适用于Firefox,Safari,Opera,但不适用于Chrome
- 在 Firefox 扩展中使用 JavaScript 删除 cookie
- firefox中的Cookie代码失败
- 如果浏览器关闭,如何将FireFox cookie设置为持久
- 在Firefox扩展中按域名访问特定cookie
- Cookie代码可在FireFox和Explorer中使用,但不能在Chrome中使用
- 如何从firefox扩展中删除浏览器cookie
- 标题命名为'Cookie'并不总是使用Firefox设置
- Firefox不会在@font-face声明的跨浏览器请求中发送cookie
- Chrome不提醒cookie,但Firefox有
- Firefox扩展:将当前网页的cookie名称写入本地.txt文件中
- Cookie not set if Firefox 5
- 使用document.cookie删除firefox上不起作用的cookie.下面的
- 为什么 Firefox 和 Chromium 之间的 cookie 行为不同
- 阅读cookie工作在Firefox/IE,不是Chrome