【问题标题】:Javascript Cookie problems IEJavascript Cookie 问题 IE
【发布时间】:2010-05-15 01:26:22
【问题描述】:

我一直在思考一些 Javascript,请帮忙,我不明白为什么它根本无法在 IE 7 或 8 中找到我的 cookie

我正在通过另一个事件将 cookie 设置为 true,但我只想看到 IE 获取我最初设置的 cookie。也可以在 Firefox 中使用,在此先感谢。

var t=setTimeout("doAlert()",8000);
var doAlertVar = true;
document.cookie =  "closed=0;expires=0;path=";

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie;
    alert(ca);
    ca = ca.replace(/^\s*|\s*$/g,'');
    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 doAlert(){

    if(readCookie('closed')==1){
        doAlertVar = false;
    }
    if(readCookie('closed')==0){
        alert("unlicensed demo version\nbuy online at");

    }
    t=setTimeout("doAlert()",5000);

}

【问题讨论】:

  • 你到底看到了什么?什么时候收到警报?你期待看到什么?
  • 我没有看到我在 Javascript 的开头('closed=0;')添加的 cookie,只有可以通过 http 请求的 cookie

标签: javascript cookies internet-explorer


【解决方案1】:

从哪里开始..

setTimeout("doAlert()",8000);
// do not use strings as an argument to setTimeout, that runs eval under the hood.
// use
setTimeout(doAlert,8000);
// instead

document.cookie =  "closed=0;expires=0;path=";
// this is wrong, expires should follow the format Fri, 14 May 2010 17:22:33 GMT (new Date().toUTCString())
// path should be path=/

【讨论】:

    【解决方案2】:

    您也可以使用正则表达式来做到这一点:

    function readCookie(name, defaultValue) {
      var value = defaultValue;
      document.cookie.replace(new RegExp("\\b" + name + "=([^;]*)"), function(_, v) {
        value = v;
      });
      return value;
    }
    

    【讨论】:

      猜你喜欢
      • 2016-03-11
      • 2012-07-30
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      相关资源
      最近更新 更多