【问题标题】:Fire jquery event only once for each user每个用户只触发一次 jquery 事件
【发布时间】:2012-08-23 20:30:47
【问题描述】:

我有一个弹出窗口在加载后出现在主页上,我需要确保每个新访问者只发生一次。

最好的方法是什么?我对 jQuery 和 PHP 非常熟悉,但老实说,我已经有一段时间没有使用过任何类型的 cookie。

欢迎所有建议。

谢谢

【问题讨论】:

  • 我猜 if(isset($_SESSION['views'])) 不会工作,因为你已经设置了会话?

标签: php jquery cookies


【解决方案1】:

我能想到 3 种可能性:

PHP 会话:
当事件触发时,向服务器发送一个 AJAX 调用。将用户的 session_id 存储在某处,例如在数据库中(带有 sessionid 的简单 1 列表就足够了)。如果您检查数据库并在那里找到 sessionid,您就知道用户已经触发了该事件。

Javascript Cookie:
只需将信息存储在 JS cookie 中。如果你想坚持使用 jQuery,可以使用 nice plugin for this kind of purpose

浏览器商店:
这可以是sessionStore or localStore,您可以在其中轻松保存识别触发事件所需的信息。

就个人而言,如果您知道访问者的浏览器,我会选择 2 甚至 3,因为并非周围的每个浏览器都能够做到这一点(尽管我怀疑是否有人仍然想要支持 IE6/7)

【讨论】:

  • 谢谢,正是我需要的答案以供将来参考
【解决方案2】:

在这种情况下,您可以使用会话或 cookie。

1.检查cookievisited_already是否存在。

2.如果存在,他已经访问过我们的网站,什么也不做。

3.Else,第一次访问:做某事并创建visited_already cookie。

例如:

if(!isset($_COOKIE['visited_already']))
{
setcookie('visited_already' , 'true' , time()+60*60*24*7*365); //Will expire in a year (or when the user delete cookies)
//pop-up code here.
}

【讨论】:

    【解决方案3】:

    感谢你们的贡献。

    我找到了另一个完美的解决方案。 这个链接对我帮助很大: How to set cookies in Javascript

    jQuery(window).load(function() {
                var cookie_mesage = jQuery.cookie('welcome');
                if (cookie_mesage != 'hide') {
                    jQuery('.ceebox').trigger('click');
                    jQuery.cookie('welcome', 'hide');
                };
            });
    

    它速度快,运行良好,正是我所需要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      相关资源
      最近更新 更多