0

我试图在浏览器窗口/选项卡之间共享一些信息,由于浏览器支持问题,我对 HTML5 本地存储持怀疑态度。一些谷歌搜索让我相信 cookie 可以用于此,所以我抓住 jquery.cookie 并设置了一个简单的测试。

加载时写入 cookie 的两个页面:

$.cookie("testValue", new Date().getTime());

和一个在每个警报中显示 cookie 值的按钮:

alert($.cookie("testValue"));

测试时,我在每个页面上看到不同的值,这会让我相信这不起作用,但我一直在这里和其他地方看到人们似乎在推荐它的帖子,所以我想知道我是否只是做错了什么?

4

3 回答 3

2

Cookie 仅在由 JS 设置或页面加载时在 JavaScript 环境中更新。

localStorage 就是为此而设计的。IE8支持就好了,只有真正老的IE7及以下不支持。尽管 IE9 仅适用于 Windows-Vista-and-7,但 IE8 在 XP 上还不错,因此您应该可以毫不费力地要求仍在使用过时浏览器的用户进行更新。

(我不能这么说,但 IE 确实需要像所有其他浏览器一样的自动更新程序......)

于 2012-02-17T14:44:29.900 回答
0

DateTime()没有定义。改为使用Date()

$.cookie("testValue", new Date().getTime());

无论如何,它对我有用。这是一个简单的html页面:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>demo</title>  
  <script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.js'></script>  
  <script type='text/javascript' src="https://raw.github.com/carhartl/jquery-cookie/master/jquery.cookie.js"></script>
  <script type='text/javascript'>
    $(window).load(function(){
        $("#get").click(function(){
            alert($.cookie("testValue"));
        });
        $("#set").click(function(){
            $.cookie("testValue", new Date().getTime());
        });
    });
  </script>
</head>
<body>
  <a id="get" href="#">get cookie</a>
  <a id="set" href="#">set cookie</a>
</body>
</html>

使用 FireFox 10.0 在 localhost 中尝试过。

于 2012-02-17T14:47:19.500 回答
0

第二次尝试=P

尝试这样的事情:

<iframe id="cookies" src="refresher.html" style="display: none"; />
<script type="text/javascript">
    (function() {
        var ifr = document.getElementById('cookies');
        setInterval(function() {
            var cd = ifr.contentDocument.cookie.split(";");
                l = cd.length, i, k, ret = {};
            for( i=0; i<l; i++) {
                k = cd[i].split("=");
                k[0] = k[0].replace(/^ +| +$/g,'');
                k[1] = k[1].replace(/^ +| +$/g,'');
                ret[k[0]] = k[1];
            }
            window.cookiedata = ret;
        },5000);
    })();
</script>

刷新器.html:

<script type="text/javascript">setTimeout(function() {location.reload();},5000);</script>

您仍然可以使用 jQuery$.cookie设置cookie,但要获取它们,您现在使用cookiedata.cookiename.

将 调整为5000在响应性和重新加载数据之间看起来不错的折衷。

于 2012-02-17T14:58:10.990 回答