gpt4 book ai didi

javascript - 使用 cookie 不显示基于特定操作的弹出窗口

转载 作者:可可西里 更新时间:2023-11-01 02:09:44 26 4
gpt4 key购买 nike

我目前正在使用 fancybox 在页面加载 2 秒后在弹出窗口中传送内容。我想实现一些东西来消除每次加载网站页面时弹出的烦恼。

理想情况下,如果访问者单击 fancybox 上的“关闭”按钮,弹出窗口将在第二天为他们显示。如果访问者单击弹出窗口中的链接,则弹出窗口将在指定的稍后日期出现。

这是我目前用于弹出窗口的代码:

// 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 fiddle :https://jsfiddle.net/30Lxfc6r/

最佳答案

我已经使用基于 FancyBox 文档的 JSBin 示例更新了我的答案。 https://jsbin.com/bajocosese/edit?html,console,output http://fancyapps.com/fancybox/#docs

$(function () {
// Define cookie name
var cookieName = 'hide_donate';

// Configure fancyBox
$('.fancybox').fancybox({
autoDimensions: false,
autoSize: false,
height: 'auto',
padding: 0,
width: 650,
beforeLoad: function() {
// Returning false will stop fancybox from opening
return ! $.cookie(cookieName);
},
afterClose: function() {
// Set cookie to hide fancybox for 1 day
$.cookie(cookieName, true, { expires: 1 });
}
});

// Handle donate click event
$('a#donate').on('click', function (event) {
event.preventDefault();

// Hide fancybox and set cookie to hide fancy box for 7 days
$.fancybox.close();
$.cookie(cookieName, true, { expires: 7 });
});

// Launch fancyBox on first element
setTimeout(function () {
$(".fancybox").trigger('click');
}, 2000);
});

请记住,除非您删除 cookie 或更改 cookie 名称,否则此示例只会工作一次。

关于javascript - 使用 cookie 不显示基于特定操作的弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42118865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com