jquery - 用户在页面中超过 15 秒后显示弹出窗口
问题描述
根据需求做了一个小逻辑。尽力满足以下问题。但是,仍然受到以下逻辑的打击。
如果访客将鼠标移出窗口,则显示弹出窗口(这很好用)
但是,我们只需要显示弹出窗口,当用户在这个页面上超过 15 秒并且鼠标离开窗口时。
HTML
<div id="demo-fancybox-modal" data-delaytoshow="15">
<div class="content">
Demo Content
</div>
<button data-fancybox-close="" class="fancybox-close-small" title="Close"><svg class="icon-container"><use href="icons/symbols.svg#i-close" xlink:href="icons/symbols.svg#i-close"></use></svg></button>
</div>
JS:
var dataDelayToShow = component.attr('data-delaytoshow');
var cookieDelaySecond = dataDelayToShow * 1000;
setTimeout(function () {
$.fancybox.open(component,{clickSlide: false});
}, cookieDelaySecond);
$(document).mouseleave(function () {
$.fancybox.open($('#demo-fancybox-modal') ,{clickSlide: false});
});
解决方案
您可以在页面加载中创建时间变量。每当用户执行鼠标离开事件时,检查时差并显示弹出窗口。
$(document).ready(function() {
var loadTime = new Date();
$(document).mouseleave(function () {
var leaveTime = new Date();
var diff = leaveTime - loadTime;
var sec = diff/1000;
if(sec > 5){
alert('Leaving after 5 seconds')
}
loadTime = new Date();
});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
推荐阅读
- django - django 序列化程序尝试在 try-except 块内分配之前引用变量
- php - PHP MySQL 大数据集有大量时间显示在角度组件和从数据库导出的小 csv 文件中
- makefile - CMake 将环境变量传递给 ExternalProject_Add
- vim - 为什么 vim 不在任何寄存器中存储 `daw`-ed 文本
- security - HTTPS 证书和 Kubernetes (EKS)
- java - javax.persistence.RollbackException:在 JPA 代码中提交事务时出错
- android - 我们应该什么时候开始将 Fabric 的 Crashlytics 迁移到 Firebase Crashlytics?
- sql - 查询 SSAS 以查找表是否在多维数据集中使用
- javascript - XPages CSJS 被执行,而 SSJS 不被执行
- bokeh - 可以像 Pandas DataFrame 一样一次性绘制 Bokeh ColumnDataSource 吗?