启用multiWindowSupport后,jQuery IdleTimeoutPlus如何实现模态触发时标签页闪烁
实现IdleTimeoutPlus警告模态框触发时的标签页闪烁/高亮
你可以借助IdleTimeoutPlus的警告触发回调,结合浏览器页面可见性API和标题切换逻辑,实现后台标签页的闪烁提醒效果。以下是具体修改方案:
1. 调整IdleTimeoutPlus配置,添加回调与闪烁逻辑
直接在你的初始化代码中扩展功能,核心是监听警告弹窗事件,在后台标签页时切换标题实现闪烁:
jQuery(document).ready(function() { // 保存页面原始标题,用于闪烁切换 const originalTitle = document.title; let blinkTimer; // 启动标签页闪烁 function startTabBlink() { // 当前标签处于前台时不触发闪烁 if (!document.hidden) return; blinkTimer = setInterval(() => { document.title = document.title === originalTitle ? '⚠️ 会话即将过期!' : originalTitle; }, 1000); } // 停止闪烁并恢复原标题 function stopTabBlink() { clearInterval(blinkTimer); document.title = originalTitle; } // 用户切回当前标签时自动停止闪烁 document.addEventListener('visibilitychange', () => { if (!document.hidden) stopTabBlink(); }); IdleTimeoutPlus.start({ idleTimeLimit: 240, warnTimeLimit: 120, multiWindowSupport: true, idleCheckHeartbeat: 60, activityEvents: 'keypress', warnCountdownBar: true, // 警告模态框弹出时启动闪烁 warnCallback: function() { startTabBlink(); }, // 用户操作恢复会话时停止闪烁 resumeCallback: function() { stopTabBlink(); }, // 会话过期后停止闪烁(可选) timeoutCallback: function() { stopTabBlink(); } }); });
2. 可选增强:桌面通知提醒
如果需要更醒目的提示,可搭配浏览器桌面通知功能(需用户授权),在警告弹窗时触发:
// 新增桌面通知函数 function sendExpiryNotification() { if (!("Notification" in window)) { alert("你的浏览器不支持桌面通知"); return; } if (Notification.permission === "granted") { new Notification('会话即将过期', { body: '请返回页面操作,避免会话失效', // 可选:替换成你的图标路径 icon: '/static/images/notification-icon.png' }); } else if (Notification.permission !== "denied") { Notification.requestPermission().then(perm => { if (perm === "granted") { new Notification('会话即将过期', { body: '请返回页面操作,避免会话失效' }); } }); } } // 在warnCallback中调用 warnCallback: function() { startTabBlink(); sendExpiryNotification(); }
核心逻辑说明
- 通过
document.hidden判断标签页是否处于后台,仅在后台时触发闪烁,避免干扰前台操作 - 利用
visibilitychange事件监听用户切回标签页的动作,自动停止闪烁并恢复原标题 - 借助IdleTimeoutPlus内置的
warnCallback、resumeCallback回调,精准控制闪烁的启停时机
内容的提问来源于stack exchange,提问作者Rodney
相关产品推荐
相关产品推荐

