【问题标题】:Reveal Modal - Show only once per day显示模式 - 每天仅显示一次
【发布时间】:2014-01-21 08:40:10
【问题描述】:

我正在使用显示模式在我的网站加载时加载弹出窗口。但是,每次页面加载时都会加载弹出窗口。由于访问者可以访问多个页面或多个实例,因此这一限制对我们的访问者体验不利。

以下是我在加载页面后用来加载显示模式的 js。

jQuery(document).ready(function($) {
/* Pop-up
================================================= */

$(function() {
    function showpanel() {
    $('.reveal-modal').reveal({
        animation: 'fade',
        animationspeed: 800
    });
    }
    setTimeout(showpanel, 4000)
   }); 
});

无论访问者访问多少个不同的页面,我可以添加什么来确保显示模式在特定的一天只加载一次?

不胜感激。

谢谢

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您需要持久存储,如 cookie、localStorage 或服务器端存储。

    $(function() {
        if ( localStorage.getItem('seen') != (new Date()).getDate()) {
            setTimeout(showpanel, 4000);
        }
    });
    
    
    function showpanel() {
        $('.reveal-modal').reveal({
            animation: 'fade',
            animationspeed: 800
        });
    
        localStorage.setItem('seen', (new Date()).getDate());
    }
    

    MDN 有一个适用于旧版浏览器的 polyfill

    【讨论】:

    • 不错的方法,当然可以解决 cookie 的问题!旧浏览器可能有问题...
    • @adeno,我尝试实现该脚本,但由于某种原因它无法正常工作。每次加载网站页面时,弹出窗口都会不断出现。我的实现如下: jQuery(document).ready(function($) { /* Pop-up ========================== ====================== */ $(function() { if ( localStorage.getItem('seen') != (new Date()).getDate ()) { setTimeout(showpanel, 4000); } }); function showpanel() { $('.reveal-modal').reveal({ animation: 'fade', animationspeed: 800 }); localStorage.setItem('看到', (new Date()).getDate()); }
    • 对我来说很好用,这里是fiddle,警报只弹出一次。
    【解决方案2】:

    实现这一目标的最简单方法是使用仅持续 24 小时的cookie

    您要做的是检查是否有 cookie,如果没有则显示对话框

    if($.cookie('MyCookie') != 'DialogShown'){
      showpanel();
      setCookie();
    }
    

    这是设置它的代码

    function setCookie(){
        $.cookie('MyCookie', 'DialogShown',
          {
             expires: date.getTime() + (24 * 60 * 60 * 1000) // now add 24 hours
          });
    }
    

    但请注意,用户可能已将浏览器配置为拒绝 cookie,并且在英国(可能其他国家/地区有 regulations 关于使用 cookie 的网站)。

    【讨论】:

    • 嗨 Liath,感谢您的回复。但是,您能否协助向我展示如何将您的代码实现到我上面的代码中。我对此比较陌生。
    • 我已经扩展了我的答案
    【解决方案3】:

    对于客户端解决方案,您可以使用 cookie 在用户的浏览器中设置并将其设置为 1 天。

    $.cookie('the_cookie', 'the_value', { expires: 1 });
    

    更多详情见: https://github.com/carhartl/jquery-cookie

    编辑:

    在您的 html 页面中包含 Jquery-cookie 插件,然后添加以下代码

    $(function() {
        if($.cookie('alreadyShow') === null) {
            $.cookie('alreadyShow', true, {expires: 1});
    
            $('.reveal-modal').reveal({
               animation: 'fade',
               animationspeed: 800
           });
        }
    });
    

    【讨论】:

    • 谢谢。因为我是网络编程的新手,如果你能帮助我将你的建议实现到我上面的代码中,我将不胜感激。
    猜你喜欢
    • 2016-04-14
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 2020-01-11
    相关资源
    最近更新 更多