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

运行jQuery onpopstate脚本触发Uncaught ReferenceError报错求助

问题排查结果

报错的核心触发原因是变量访问顺序违反let的暂时性死区规则,同时代码中还存在3处会导致逻辑失效的拼写/语法错误:

  • 直接触发引用错误的问题:let声明的变量在声明语句执行前属于暂时性死区,不允许提前访问。你的代码中先执行了let slash = page.lastIndexOf("/")访问page变量,下一行才通过let page = xxx声明page,顺序完全写反,正好对应报错提示里的「初始化前无法访问page」。
  • 其他隐藏错误:
    • window.location的路径属性为全小写的pathname,你写为驼峰格式pathName会取到undefined,导致后续路径解析失效
    • if判断条件中写为page = ''是赋值操作而非相等判断,会直接把page重置为空字符串,造成分支逻辑错误,判断相等需要使用严格相等运算符===
    • jQuery的$.ajax参数格式错误,请求成功的回调函数需要绑定到success属性上,直接在参数对象中传入匿名函数不会被识别执行
修正后完整代码
window.onpopstate = function(popEvent) {
    let urlPath = window.location.pathname;
    // 先获取路径再计算斜杠位置
    let slash = urlPath.lastIndexOf("/");
    let page = urlPath.substr(slash + 1);
    let $tab;

    // 使用===做相等判断
    if (page === '') {
        $tab = $("#tabs .tab:first-of-type");
        page = $tab.attr("href");
    } else {
        $tab = $("#tabs .tab[href=" + CSS.escape(page) + "]");
    }

    $tab.addClass("current").siblings().removeClass("current");

    // 补全ajax的success回调字段
    $.ajax({
        url: "subpages/" + page,
        success: function(html) {
            $(".append").html(html);
        }
    });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.10 16:15:46