如何解决jQuery:在延迟或滚动时打开模态
我有一个使用fancybox的模态。
我的客户希望在延迟或向下滚动到特定 div 后显示此内容。
他们还希望每次会话仅触发一次,在本例中为每天一次。
我让所有这些东西都在工作,大部分都是独立的,但我似乎无法将所有东西整合在一起。我知道我的 JS 是有限的,所以我确定我错过了一些简单的东西。
基本上,我希望代码是:
- 等等。如果您不滚动,请在延迟后关闭模态。
- 如果模态没有在延迟时触发,请在向下滚动后触发。
- 一天之内不要再开火。
在滚动功能上,这似乎也触发了不止一次……您到达该部分,但是如果继续滚动,它将再次触发,从而导致“找不到内容”错误。
我的代码在下面,这里有一个测试页面:https://mayeswilsonassociates.com/code-testing-page/
谁能帮我解决这个问题?
if (window.localStorage) {
var nextPopup = localStorage.getItem('nextNewsletter');
var expires = new Date();
expires = expires.setHours(expires.getHours() + 24);
// This is then function used to detect if the element is scrolled into view
function elementScrolled(elem) {
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
var elemTop = $(elem).offset().top + 750;
return ((elemTop <= docViewBottom) && (elemTop >= docViewTop));
}
function newsletterDelay() {
if (nextPopup < new Date()) {
setTimeout(function() {
$.fancybox.open({
src: '#mc-popup #mc_embed_signup',type: 'inline',});
},4500);
localStorage.setItem('nextNewsletter',expires);
};
};
function newsletterScroll() {
if (nextPopup < new Date()) {
$(window).scroll(function() {
if (elementScrolled('#section-services')) {
$.fancybox.open({
src: '#mc-popup #mc_embed_signup',});
localStorage.setItem('nextNewsletter',expires);
}
});
};
};
};
newsletterDelay();
newsletterScroll();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。