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

JS实现浏览器标签页通知计数时变量不更新、前缀重复问题求助

问题原因
  • 前缀重复拼接:每次执行changeTitle函数时,都直接在当前已带计数前缀的document.title基础上叠加新前缀,导致多次调用后前缀不断重复。
  • 计数无法更新:numb变量仅在脚本初始化时读取了一次notify_count的值,后续notify_count动态更新后numb不会同步变更,且changeTitle逻辑中没有读取最新的通知计数,所以数值一直是旧值。
修复代码

首先需要保存页面原始的无前缀标题,每次更新标题时都基于原始标题拼接最新的计数,同时每次执行逻辑时主动读取最新的notify_count值,修正后代码如下:

// 初始化时存储页面原始标题,避免后续被前缀覆盖
const originalTitle = document.title;

function changeTitle() {
    // 每次都获取最新的未读通知数
    const latestCount = notify_count.toString();
    // 基于原始标题拼接新的带计数标题
    document.title = `(${latestCount}) ${originalTitle}`;
}

function newUpdate() {
    // 注意不要重复调用newUpdate,否则会生成多个定时器导致性能问题
    setInterval(changeTitle, 2000);
}

可选优化:如果未读通知数为0时不需要显示计数前缀,可以调整changeTitle的逻辑:

function changeTitle() {
    const latestCount = Number(notify_count);
    if (latestCount > 0) {
        document.title = `(${latestCount}) ${originalTitle}`;
    } else {
        // 计数为0时恢复原始标题
        document.title = originalTitle;
    }
}

内容的提问来源于stack exchange,提问作者Ben Leonard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:51:03