You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:10:33