2009-11-10 84 views

回答

7

你写一个cookie,并尝试回读:这样,你就会知道,如果启用了Cookie。

40

是的! Read this excellent article about using cookies with JavaScript

下面是一个摘录的代码示例。

function createCookie(name,value,days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     var expires = "; expires="+date.toGMTString(); 
    } 
    else var expires = ""; 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') c = c.substring(1,c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 

function eraseCookie(name) { 
    createCookie(name,"",-1); 
} 

至于测试它们是否启用。我喜欢jldupont的回答。

+0

有工作的脚本好文章。 – Bratch 2010-10-15 00:32:44

+0

谢谢!非常好的例子。 – 2017-04-27 14:36:52

4

可以使用navigator.cookieEnabled,但我不知道这是否是所有浏览器都支持。

有关cookie的更多信息,请this

1

我看看饼干,例如启用?

是的,但不容易为你的想法。 navigator.cookieEnabled是一个非常普遍的标志,并不完全涵盖你可以在什么情况下设置cookie。

例如,它可能被允许会话cookie,但永久性Cookie阻挡。所以你不知道cookie套装是否会成功,除非你继续尝试,设置一个虚拟document.cookie,然后阅读document.cookie以查看它是否成功。

在许多浏览器时持久cookie禁用持久cookie将被降级为一个会话cookie。但不是IE,它会阻止它。您可以尝试通过将持久性和会话cookie设置为document.cookie并查看是否存在。

0

W3Schools JavaScript Cookies代码中有一个错误。在功能setCookie方法这一行:

exdate.setDate(exdate.getDate()+expiredays); 

javascript日期对象属性:

getDate() - Returns the day of the month (from 1-31) 
... 
getTime() - Returns the number of milliseconds since midnight Jan 1, 1970 
... 

getDate() plus the number of days is not going to work. I think it should be something like this: 

expire = expiredays * 1000 * 60 * 60 * 24; // convert to milliseconds 
var exdate = new Date(today.getTime() + (expire)); 

在TechPatterns.com Javascript Cookie Script Get Cookie, Set Cookie, Delete Cookie Functions工作做得更好该Cookie库(#1在谷歌搜索结果并不总是最好的)。

我测试了IE8中两个页面的代码,第一个导致我的cookie的过期日期为1/1/2038凌晨1:00。第二个示例中的代码将我的Cookie过期日期设置为从我测试它的时间起,恰好与预期的一样。

+0

这些库似乎还有其他问题(如果cookie包含'='):http://thinkclay.com/technology/add-edit-delete-cookies-with-javascript#comment-712789590 – despot 2012-12-27 12:47:09

相关问题