在 IE 下测试 把 日期对象 (比如 Wed Mar 03 2010 00:00:00 GMT 0800) 保存入 cookies, 保存的字符串实际为2010%u5E743%u67083%u65E5这个字符串再从 cookies 中取出时,则无法正确还原成日期对象了。请问该如何做?在 firefox 下测试, 保存的结果是 Wed%20Mar%2003%202010%2000%3A00%3A00%20GMT+0800测试没问题,可以正确取出,只是 IE 下的cookie 有问题。100分相送,谢谢大家帮忙!祝大家虎年快乐!

解决方案 »

  1.   

    先用toString()把日期转为文本格式,存入cookie
    取出时,再用 var t=new Date(日期的文本); 转回来就行了
      

  2.   

    alert(unescape("2010%u5E743%u67083%u65E5"));
      

  3.   

     <SCRIPT LANGUAGE="JavaScript">
      <!--
    function SetCookie(name,value) 
    {
        var Days = 1;  
        var exp  = new Date();    
        exp.setTime(exp.getTime() + Days*24*60*60*1000);
        document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
    }function getCookie(name)      
    {
        var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
         if(arr != null) return unescape(arr[2]); return null;}var v=getCookie("test");
    if(v==null){
    SetCookie("test",new Date());
    alert('写入成功!');
    }
    else{
    alert('test值:'+v);
    }
      //-->
      </SCRIPT>貌似没问题!
      

  4.   

    cookies.js
    var Cookies = {};
    Cookies.set = function(name, value){
         var argv = arguments;
         var argc = arguments.length;
         var expires = (argc > 2) ? argv[2] : null;
         var path = (argc > 3) ? argv[3] : '/';
         var domain = (argc > 4) ? argv[4] : null;
         var secure = (argc > 5) ? argv[5] : false;
         document.cookie = name + "=" + escape (value) +
           ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
           ((path == null) ? "" : ("; path=" + path)) +
           ((domain == null) ? "" : ("; domain=" + domain)) +
           ((secure == true) ? "; secure" : "");
       //alert( document.cookie );
    };Cookies.get = function(name){
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    var j = 0;
    while(i < clen){
    j = i + alen;
    if (document.cookie.substring(i, j) == arg)
    return Cookies.getCookieVal(j);
    i = document.cookie.indexOf(" ", i) + 1;
    if(i == 0)
    break;
    }
    return null;
    };Cookies.clear = function(name) {
      if(Cookies.get(name)){
        document.cookie = name + "=" +
        "; expires=Thu, 01-Jan-70 00:00:01 GMT";
      }
    };Cookies.getCookieVal = function(offset){
       var endstr = document.cookie.indexOf(";", offset);
       if(endstr == -1){
           endstr = document.cookie.length;
       }
       return unescape(document.cookie.substring(offset, endstr));
    };