2

我想知道我怎样才能拥有一个只有在您第一次加载页面时才加载或显示广告但每次刷新页面时隐藏它的 div?

我只有用 Jquery 加载 div 的代码,但不知道刷新页面后如何隐藏它:

$(document).ready(function() {
  $(".referralProgram").fadeIn("slow");
});
4

4 回答 4

5

使用 cookie:

$(document).ready(function() {
    if (!readCookie("adSeen")) {
        $(".referralProgram").fadeIn("slow");
        createCookie("adSeen", "1", 1000);
    }
});

function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    } else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var 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;
}

来自quirksmode.org 的Cookie 函数。

编辑:由于很多人都在讨论如果禁用 cookie 时如何处理这个问题,应该指出服务器会话实现依赖于 cookie 或 url 中的会话标识符。充其量,您只能阻止为同一用户展示广告,只要会话标识符在 url 中。返回主页没有会话 ID 将重新显示广告。此外,如果用户共享 url,粗心的实现(甚至一些小心的实现)可能会导致其他用户误报。 localStorage解决方案不适用于大多数(如果不是全部)浏览器中禁用的 cookie。

于 2013-01-09T21:55:26.607 回答
1

您需要一种方法来跟踪广告何时显示给用户。在创建广告时设置 cookie 并在再次显示之前检查它?

于 2013-01-09T21:55:05.293 回答
0

您可以使用客户端持久存储来标记用户已经看到了这一点。这里有 3 个选项:

1) Cookies - 在访问用户的机器上设置一个 cookie。

2) HTML5 存储 - 您可以将标志存储在浏览器(仅限 HTML5)存储中。

3) 服务器会话 - 如果您使用中间件(PHP、ASP.NET、Java 等),您可以通过会话变量进行跟踪(这是 cookie 的抽象,只有在您创建它时才会持久)。

于 2013-01-09T21:57:54.373 回答
0

我不确定您的服务器端实现是什么样的,但如果您担心 cookie 被关闭,您可以使用会话状态在服务器端处理此问题。

于 2013-01-09T22:00:20.130 回答