【问题标题】:Run jQuery code only the first time a user visits the website仅在用户第一次访问网站时运行 jQuery 代码
【发布时间】:2016-05-25 16:14:01
【问题描述】:

我有这个代码

setTimeout(function () {
    $("#videoOverlay").fadeIn();
    document.getElementById("video").play();
}, 8000);

这意味着加载 8 秒后,会弹出一个弹出窗口并播放一段视频。我只希望在我第一次访问该网站时出现此问题。我怎样才能用 jQuery 做到这一点?

【问题讨论】:

  • 您使用 cookie 标记了您的问题,那么您是否尝试设置和读取 cookie?
  • 不会弹出窗口,也不会播放视频。默认是禁用 javascript 并阻止弹出窗口。
  • @Brandon 我同意,但这是一个音乐家网站,所以它不是广告,而是网站用户正在寻找的内容。
  • @SebastianAlsina - 错了什么?

标签: jquery cookies


【解决方案1】:

尝试使用 localStorage 而不是 cookie:

if (!localStorage.getItem('viewed')){
    setTimeout(function () {
        $("#videoOverlay").fadeIn();
        document.getElementById("video").play();
        localStorage.setItem('viewed','yes');
    }, 8000);
};

删除它:

localStorage.removeItem('viewed');

使用本地存储,Web 应用程序可以在用户浏览器中本地存储数据。

来自http://www.w3schools.com/html/html5_webstorage.asp

什么是 HTML 本地存储?

在 HTML5 之前,应用程序数据必须存储在 cookie 中,包含在每个服务器请求中。本地存储更安全,可以在本地存储大量数据,不影响网站性能。

与 cookie 不同,存储限制要大得多(至少 5MB),并且信息永远不会传输到服务器。

本地存储是按源(按域和协议)的。来自一个来源的所有页面都可以存储和访问相同的数据。

使用:sessionStorage

您也可以使用与 localStorage 对象相同的 sessionStorage 对象,只是它只存储一个会话的数据。当用户关闭特定的浏览器选项卡时,数据将被删除。

if (!sessionStorage.viewed){
    setTimeout(function () {
        $("#videoOverlay").fadeIn();
        document.getElementById("video").play();
        sessionStorage.viewed=1
    }, 8000);
};

【讨论】:

  • 这很有魅力。你能向我解释一下 localStorage 和 cookie 之间的区别吗?据我了解,这应该使用 cookie 来完成,但 localStorage 成功地做到了,而且看起来它们的行为相同。你能告诉我不同​​之处吗?
  • 当然!我在答案中添加了解释。
  • 还要记住,如果你需要删除它localStorage.removeItem('viewed');
  • localStorage 的使用是我用例的完美示例。谢谢:)
【解决方案2】:

你可以试试这个 jquery cookie 插件 https://github.com/js-cookie/js-cookie

然后你就可以用它了

Cookies.get('name'); 
Cookies.set('name','value'); 

【讨论】:

  • 谢谢!另一位用户建议我使用 localStorage,它运行良好。
  • 我承认我没有使用这些库中的任何一个,但看起来您的代码适用于旧的、已弃用的 github.com/carhartl/jquery-cookie。您链接到的新库似乎不再是 jQuery 插件,并且具有不同的语法。另外,在代码中你不是不小心将 cookie 的写入与读取交换了吗?
  • @kamilk 你是对的。我有旧插件的代码,但没有意识到我链接了新版本。我改变了答案。据我所知,我们每次都可以写入 cookie(如果它已经存在,它将被覆盖还是我错了?)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多