1

我正在处理这段代码.. 并且可以在所有浏览器中使用,除了 chrome。我想每 24 小时为每个 IP 显示 div(A) 1 次。显示该 div(A) 后,我想在每次该 ip 访问我的页面时显示另一个 div(B)。这是我的代码

    <head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
    <script type="text/javascript" src="https://github.com/carhartl/jquery-cookie/raw/master/jquery.cookie.js"></script>
    <script type="text/javascript">                                         
    $(document).ready(function() {
        if( $.cookie('showOnlyOne') ){
            //it is still within the day
            //hide the div
            $('#showOnlyOnceADay').hide();
            $('#showothertimes').show();
        } else {
            //either cookie already expired, or user never visit the site
            //create the cookie
            $.cookie('showOnlyOne', 'showOnlyOne', { expires: 1 });

            //and display the div
            $('#showOnlyOnceADay').show();
            $('#showothertimes').hide();
        }
    });
    </script>     
</head>
<body>
    <div id="showOnlyOnceADay">
      Div(A)
    </div>
    <div id="showothertimes">
     Div(B)
    </div>
</body>

在 Chrome 中总是同时显示两个 div。有什么问题?谢谢!

4

1 回答 1

1

您正在链接到 github 上 javascript 文件的原始版本。未使用正确的 MIME 类型提供此服务,因此您需要下载并自行提供服务。Github raw 不是 CDN。

你是在本地机器上开发这个吗?如果是这样,Chrome 将不接受基于文件协议的 cookie。您可以通过使用标志启动 Chrome 来启用它们,或者使用某处的 Web 服务器通过 HTTP 对其进行测试。更多信息可以在这里找到:

https://github.com/carhartl/jquery-cookie/issues/231

另外,只是要指出,从技术上讲,您的代码将无法通过 IP 地址运行,因为 cookie 存储在每台机器和每个浏览器中,并且很容易清除和规避。除此之外,您对两个 div 的标记在源代码中仍然可用,并且可以使用开发工具轻松查看。如果安全性(或者更确切地说是您的规则的可执行性)是一个问题,您应该考虑将 cookie 代码移动到服务器端,并且只将适当的 div 写入浏览器。

于 2013-11-06T08:24:05.033 回答