Cookie和多个浏览器窗口/标签

时间:2012-02-17 14:41:21

标签: jquery html cookies jquery-cookie

我正在尝试在浏览器窗口/标签之间共享一些信息,而且由于浏览器支持问题,我对HTML5本地存储很谨慎。一些谷歌搜索引导我相信cookie可以用于此,所以我抓住了jquery.cookie并设置了一个简单的测试。

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

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

和一个按钮,在每个警报上显示cookie值:

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

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

3 个答案:

答案 0 :(得分:2)

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

localStorage就是为此而设计的。 IE8支持它很好,它只是真正的旧IE7及以下。虽然IE9仅适用于Windows-Vista-and-7,但IE8在IE上运行良好,因此您可以毫无疑问地向仍在古老浏览器上的用户进行更新。

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

答案 1 :(得分: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中尝试。

答案 2 :(得分: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>

refresher.html:

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

你仍然可以使用jQuery $.cookie设置一个Cookie,但是获取他们现在使用cookiedata.cookiename

5000调整为响应性和重新加载数据之间的良好折衷。