【发布时间】:2017-02-22 05:39:20
【问题描述】:
我目前正在使用花式框在页面加载后 2 秒的弹出窗口中提供内容。我想实现一些东西,以消除每次加载网站上的页面时弹出的烦恼。
理想情况下,如果访问者单击了花式框上的“关闭”按钮,则直到第二天才会出现弹出窗口。如果访问者点击了弹出窗口中的链接,则弹出窗口要到指定的稍后日期才会出现。
这是我目前用于弹出窗口的代码:
// fancybox arguments
$(".fancybox")
.attr('rel', 'gallery')
.fancybox({
padding : 0,
'autoDimensions': false,
'autoSize': false,
'width': '650',
'height': 'auto'
});
// Launch fancyBox on first element
setTimeout(function(){$(".fancybox").eq(0).trigger('click');},2000)
我认为这可以使用 js cookie 来完成,但我不确定根据我尝试使用两种不同的过期时间来执行的语法如何工作。
编辑:
这是用于弹出窗口的 HTML:
<div style="display:none">
<a class="fancybox" href="#donation-info" alt=""/></a>
<div id="donation-info">
<?php if (get_field('donation_box_text', 'option')){
echo '<h2>To all our readers:</h2>';
echo '<p>' . get_field('donation_box_text', 'option') . '</p>';
echo '<div style="text-align:center"><a href="' . get_field('donation_link', 'option') . '" id="donate" class="donate-link" />Donate</a></div>';
}; ?>
</div>
</div>
根据我的猜测,我还尝试更新上述函数以包含 cookie,但无济于事:
$(document).ready(function() {
if ($.cookie('noShowDonation')) $('.fancybox').hide();
else {
$("#donate").click(function() {
// fancybox arguments
$(".fancybox")
.attr('rel', 'gallery')
.fancybox({
padding : 0,
'autoDimensions': false,
'autoSize': false,
'width': '650',
'height': 'auto'
});
// Launch fancyBox on first element
setTimeout(function(){$(".fancybox").eq(0).trigger('click');},2000)
$.cookie('noShowDonation', true);
});
}
});
编辑 #2 -- 更新代码 使用下面@Rob 建议的代码,我尝试将配置添加到fancybox 以及超时,但是没有运气。这是 JS 小提琴:https://jsfiddle.net/30Lxfc6r/
【问题讨论】:
-
嗨!你有没有想过使用单个 cookie?
-
@misterwolf,我不太确定。也许cookie不是必需的,这可以通过HTML localstorage或其他东西来完成。我愿意接受最佳实施的建议。想法?
-
既然您已经在使用 jQuery,请查看 cookie 库 - github.com/carhartl/jquery-cookie
-
@Rob 谢谢!我已经看过了,但我什至不确定从哪里开始根据用户交互触发不同的到期日期。
-
+1 用于 DOM 存储。 Cookie 与每个 HTTP 请求一起发送:您的后端可能不关心这一点。
标签: javascript jquery cookies popup