【问题标题】:Intermittent ReferenceError: $ is undefined间歇性引用错误:$ 未定义
【发布时间】:2019-01-10 13:12:38
【问题描述】:

在滚动时为导航添加背景颜色,它会随机不起作用。我会说 50% 的时间它工作,50% 我得到 ReferenceError。这是多个设备、多个浏览器、多个页面。

<script async src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
            $(document).ready(function() {
              $(document).scroll(function () {
                var $nav = $(".masthead");
                $nav.toggleClass('navBG', $(this).scrollTop() > $nav.height());
              });
            });
</script>
.masthead{width:100%;height:80px;position:fixed;top:0;left:0;z-index:9999;box-shadow: 0 50px 50px -20px rgba(0, 0, 0, 0.2) inset;}
.masthead.navBG{box-shadow:0 5px 30px 5px rgba(0, 0, 0, 0.4);background-color:#01417E; !important;transition:background-color 100ms linear;}
<div class="masthead">
      
    		<nav id="sidenavContainer" class="sidenav">
                <!-- SOME LIs -->
                <!-- JS for Nav Functionality -->
    		</nav>
        
    		<div id="navTri" onclick="openNav()"><img src="menu.svg" alt="Menu" width="30"></div>
    		
    		<div id="logoMain"><a href="#"><img src="logo.svg" alt="Logo"></a></div>
    		
</div>

错误似乎始终出现在代码 sn-p 中。有什么想法吗?

【问题讨论】:

  • 你的 sn-p 中没有 jquery
  • 至少在 sn-p 中,jQuery 不会在任何地方导入。至于为什么会发生在你身上,也许可以查看this thread
  • 你能在你包含jquery的地方添加代码吗?
  • 听起来你的 jQuery 文件有 50% 的时间没有加载。还有你为什么要听滚动文档?

标签: javascript jquery html css scrolltop


【解决方案1】:

不要使用异步,删除它。

https://www.w3schools.com/tags/att_script_async.asp

如果你愿意,可以试试 defer 属性。

标记为 async 的脚本在可用时以随意的顺序执行。标记为 defer 的脚本将按照它们在标记中定义的顺序执行(在解析完成后)。

但是,推迟你的脚本也是如此,因为顺序很重要,并且你不希望你的脚本在 jquery 加载之前执行,在你的情况下有时会发生这种情况。 p>

【讨论】:

  • 有道理,这似乎已经解决了。不幸的是,我不记得我为什么在那里。希望我不需要它来做其他事情。谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多