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

网站上线后jQuery粘性导航菜单间歇性失效问题排查

jQuery依赖的粘性导航脚本部署后间歇性失效问题

我搭建的网站里,有一段依赖jQuery的JavaScript代码,用于在头部不可见时添加粘性导航菜单。本地运行完全正常,但部署到服务器后出现间歇性失效的情况,多次刷新后偶尔能恢复正常。出现问题时控制台报错如下:

script.js:34 Uncaught ReferenceError: $ is not defined
    at script.js:34:5
(anonymous) @   script.js:34

问题代码

JavaScript文件(script.js)

if (window.location.href.replaceAll(window.location.origin, '').replaceAll('/', '').length === 0 || window.location.href.includes("index.html")) {
    $(window).scroll
        (
            $(window).onload = function () {

                if ($(window).scrollTop() >= 300) {
                    $(window).innerWidth
                        (
                            function () {

                                if ($(window).innerWidth() < 460) {
                                    $('nav').addClass('fixed-header');
                                    $('nav div').removeClass('visible-title');
                                }
                                else {
                                    $('nav').addClass('fixed-header');
                                    $('nav div').addClass('visible-title');
                                }

                            }
                        );


                }
                else {

                    $('nav').removeClass('fixed-header');
                    $('nav div').removeClass('visible-title');
                }
            }
        );
} else {
    if ($(window).innerWidth() < 460) {
        $('nav').addClass('fixed-header');
        $('nav div').removeClass('visible-title');

    } else {
        $('nav').addClass('fixed-header');
        $('nav div').addClass('visible-title');
    }
}

HTML文件

<!DOCTYPE html>
<html lang="tr">

    <head>
        <!-- Google tag (gtag.js) -->
        <script async
            src="https://www.googletagmanager.com/gtag/js?id=XXXXXX"></script>
        <script>
        window.dataLayer = window.dataLayer || [];
        function gtag() { dataLayer.push(arguments); }
        gtag('js', new Date());

        gtag('config', 'XXXXXX');
    </script>

        <script language="JavaScript" type="text/javascript" async src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
        <script language="JavaScript" type="text/javascript" async src="/script.js"></script>

        <script id="MathJax-script" async
            src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
        <title>Arşiv</title>
        <link rel="icon" type="image/x-icon" href="../RezonansLogo.png">
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="../style.css">
    </head>

    <body>
        <header>
            <nav>
                <div class="site-title"><a
                        style="color:white; text-decoration: none"
                        href="../index.html"
                        target="_self">Rezonans Kulübü</a></div>
                <ul>
                    <li><a href="/sayfalar/yazilar.html">Yazılar</a></li>
                    <li><a href="/sayfalar/ekip.html">Ekip</a></li>
                    <ul>
                    </nav>
                </header>
                <section class="content">
                    <article>
                        <h1>Örnek.</h1>
                    </article>
                </section>
            </body>

        </html>

我已经尝试过以下方案,但都没能解决问题:

  • 将脚本移动到<body>标签内部
  • 下载jQuery到本地并引用本地文件
  • 移除脚本标签的async属性
  • 添加jQuery降级方案

附言:我知道这些代码可能效率低下且不够规范,对此深表歉意,提前感谢您的帮助。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:22:41