【问题标题】:load an ad (div) just once on first load首次加载时仅加载一次广告 (div)
【发布时间】:2013-01-10 07:06:54
【问题描述】:

我想知道如何让一个 div 仅在您第一次加载页面时加载或显示广告,但在每次刷新页面时隐藏它?

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

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

【问题讨论】:

  • 所以只向每个用户显示一次?那么如果用户在 20 天后访问,就不要显示给他们?
  • 也许另一种方法是始终向未登录的用户展示广告。登录的用户第一次可以看到它,但以后不能再看到。这将解决 cookie 问题,因为您将在服务器端而不是在客户端存储广告状态。还提供其他好处,例如跨任何设备的状态持久性。

标签: javascript jquery html


【解决方案1】:

使用 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。

【讨论】:

  • 谢谢,这很有效,我不必担心 cookie,因为看到它的客户端必须打开它才能登录并查看其他可用内容。
【解决方案2】:

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

【讨论】:

  • 这种类型的实现唯一令人讨厌的是,如果用户禁用了 cookie,他们每次都会弹出窗口。虽然不确定更好的方法。大多数网站都需要 cookie 来做任何有意义的事情。
【解决方案3】:

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

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

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

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

【讨论】:

  • #3 对于 Safari 来说不是一个好的解决方案。禁用 3rd 方 cookie。如果作者的页面嵌入在 UIWebView 中,no 状态将在客户端保存并且广告将始终显示。
  • 如果禁用 3rd 方 cookie,我认为提供的任何答案(关于 cookie)都不会起作用。
【解决方案4】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多