【问题标题】:Display Modal Window once every 3 days with cookie使用 cookie 每 3 天显示一次模态窗口
【发布时间】:2013-09-07 10:37:48
【问题描述】:

我正在尝试将 carhartl 的 jquery.cookie.js 脚本添加到我的 modal script 中,这样只有当用户 3 天没有出现/看到模式或者用户最近清除了那里的缓存时,我才能显示模式.

这是我目前所拥有的......

此代码当前通过自动单击按钮启动模式窗口来启动我的模式,并且运行良好。 (我知道可能有一种方法可以重新工作,这样它就可以自动加载模式而不需要按钮,所以如果你能帮助我重新工作那部分,我也会很感激。)

<div style="visibility:hidden;">
   <button class="md-trigger" id="modal11" data-modal="modal-11"></button>
</div>

<script>
jQuery(function(){
   jQuery('#modal11').click();
});
</script>

但是当添加脚本添加cookie到我的模式时,我似乎遇到了一个问题,请查看下面的代码,看看我哪里出错了......

<div style="visibility:hidden;">
   <button class="md-trigger" id="modal11" data-modal="modal-11"></button>
</div>

<script>
   $(document).ready(function() {
      if ($.cookie('modal_shown') == null) {
         $.cookie('modal_shown', 'yes', { expires: 3, path: '/' });
         $('#modal11').click();
      }
   });
</script>

提前感谢您对此提供的任何帮助,非常感谢您的帮助! ;-)


这是我的更新,基于 @zigdawgydawg 的帮助...但它仍然对我不起作用...

<script>
$(document).ready(function() {
   $('#modal11').click(function();
});

console.log($.cookie('modal_shown'));
   if ($.cookie('modal_shown') == null) {
      console.log('creating cookie');
   $.cookie('modal_shown', 'yes', { expires: 365, path: '/' });
   $('#modal11').click();

}
console.log($.cookie('modal_shown'));
});
</script>

【问题讨论】:

  • 您分享的代码似乎是正确的。这是demo。你有错误吗?
  • @zigdawgydawg - 我试过你的代码,但即使我清除了缓存,它也没有启动模式窗口......
  • 您使用的是哪个浏览器?在 Chrome 的开发者工具中,在“资源”选项卡下,您可以查看(并删除)当前站点的所有 cookie。
  • @zigdawgydawg - 我现在要调查一下,我用我的代码更新了主帖,看起来不错吗?
  • 是的...您显示的代码应该可以工作。一些建议:1)一旦你有它的工作删除所有console.log(...)行,2)假设你正在使用jQuery UI对话框,而不是用$('#modal11').click();触发模式,使用类似$( "#id-of-your-dialog" ).dialog( "open" );的东西。跨度>

标签: javascript jquery cookies modal-dialog jquery-cookie


【解决方案1】:

这是一个工作示例,如果“modal_shown”cookie 不存在,则会显示一个对话框。显示模式后,将添加 cookie,使其在 3 天内不会再次显示。

演示:http://jsfiddle.net/3M9Wq/

您需要包含以下库/样式表:jQuery、jQuery UI、jQuery Cookie 插件、jQuery UI 主题 CSS。

HTML:

<div id="dialog">The dialog</div>

jQuery:

$(document).ready(function() {

    // Initialize the dialog (initially hidden)
    $('#dialog').dialog({autoOpen: false});

    // Check for the "modal_shown" cookie.  If not found, show the dialog and add the cookie
    if ($.cookie('modal_shown') == null) {
        $.cookie('modal_shown', 'yes', { expires: 3, path: '/' });
        $('#dialog').dialog("open");        
    }
});

单击按钮而不是直接打开对话框的替代 jQuery:

$(document).ready(function() {

    // Check for the "modal_shown" cookie.  If not found, click the button and add the cookie
    if ($.cookie('modal_shown') == null) {
        $.cookie('modal_shown', 'yes', { expires: 3, path: '/' });
        $('#modal11').click();     
    }
});

【讨论】:

  • 嘿@zigdawgydawg - 好的,这样可以,但这不适用于我正在做的事情......
  • 好的,所以@zigdawgydawg - 我认为发生的事情是#modal11 是一个按钮,而当前工作的jQuery 是“jQuery('#modal11').click();”但是您的代码没有点击任何东西,我将如何编辑它以点击按钮...
  • 我添加了一个替代的 jQuery 示例,它改为单击按钮。它与您的原始代码非常相似。您可能需要将所有$s 更改为jQuery。这是你需要的吗?
  • 完美!!完美运行!!!非常感谢@zigdawgydawg!顺便说一句 - 爱你的名字,大声笑再次感谢!
猜你喜欢
  • 2019-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-22
  • 2017-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多