KiwenLau同学在他的个人博客使用了FundebugJavaScript错误监控插件,然后偶尔会收到jQuery is not defined这样的错误报警:

他的博客使用了Staticfile CDN提供的的jQuery:

<script src="https://cdn.staticfile.org/jquery/3.1.1/jquery.min.js"></script>

由出错的代码块可知,博客中的『返回顶部』的功能是使用了jQuery实现,如果jQuery出错,意味着该功能失效,那么读者就不得不手动滑动到博客顶部,这样用户体验是非常糟糕的。根据统计,3个月时间内,这个错误已经累计出现了399次,已经相当严重了。

而根据最新统计数据显示,jQuery依然是前端用得最多的JavaScript库,因此一旦jQuery出错,必定会影响很多功能,jQuery的重要性不言而喻。另一方面,不少Fundebug的用户都收到过"jQuery is not defined"的错误报警,许多前端开发者应该都遇到(也许只是你没有发现),我们通过这篇博客帮助大家解决问题。

出错原因1: 加载CDN的jQuery失败或者超时

当提供jQuery的CDN出问题导致jQuery加载失败,或者由于网络问题浏览器加载jQuery文件超时,会出现jQuery未定义的错误。

解决方案: 将jQuery文件挂载在自己的网站上作为备用,如果CDN加载jQuery失败,则使用自己网站存托管的jQuery。这样的话,大部分用户依然可以通过CDN加快访问速度,而一旦CDN出问题时也可以避免出错。

 <script src="https://cdn.staticfile.org/jquery/3.1.1/jquery.min.js"></script>
<script>
window.jQuery || document.write('<script src="http://kiwenlau.com/js/jquery.min.js"><\/script>'))
</script>

KiwenLau的博客读者绝大部分来自国内,然而分析错误的IP地址后,他发现高达26.1%出错用户的来自国外。根据幸存者偏差,我们不能认定国内用户出错概率更高,而应该认定国外用户出错概率更高。那么这就不难理解了,国外用户请求国内CDN时速度太慢,导致jQuery出错。

因此,他将jQuery挂载在http://kiwenlau.com/js/jquery.min.js作为备用,解决了问题。

出错原因2: 加载jQuery的顺序错误

依赖于jQuery的其它JavaScript脚本先于jQuery加载完成并执行。这时jQuery尚未加载,因此依赖于jQuery的代码调用jQuery的话就会出错。

解决方案: 将jQuery库放在依赖于jQuery的JavaScript脚本之前,并且将这些代码放入document.ready来确保DOM加载完毕。

<script type="text/javascript" src="path/to/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
//依赖于jQuery的代码
});
</script>

关于Fundebug

https://www.fundebug.com/专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了7亿+错误事件,得到了Google、360、金山软件、百姓网等众多知名用户的认可。欢迎免费试用!

版权声明

转载时请注明作者Fundebug以及本文地址:

https://blog.fundebug.com/2017/03/06/jquery-is-not-defined/

参考链接

The State of Front-End Tooling 2016 - Results
幸存者偏差是什么意思?- 知乎

聊聊"jQuery is not defined"的更多相关文章

  1. Uncaught ReferenceError: jQuery is not defined

    页面调试时,明明引入了JQ文件,却一直提示Uncaught ReferenceError: jQuery is not defined错误. 转自:http://blog.csdn.net/baicp ...

  2. electron Uncaught ReferenceError: jQuery is not defined

    用electron写桌面程序时 ui部分的html页面引入的js会用到jquery 用常规的方式引入是不行的,会抛出如题的异常 <script type="text/javascrip ...

  3. Electron "jQuery/$ is not defined" 解决方法

    参考问题:https://stackoverflow.com/questions/32621988/electron-jquery-is-not-defined <!-- Insert this ...

  4. jquery报错:“ReferenceError: jQuery is not defined”

    这明显是没有引到jquery,原因就是jquery没有放在最前面,jquery应该最先引入.

  5. Electron 前端页面导入jQuery 出现错误Uncaught ReferenceError: jQuery is not defined

    如下: <script src="../assets/js/jquery-1.10.2.js"></script> 方法1 改为: <script&g ...

  6. odoo jQuery is not defined

    The steps1.Query your db as this query.select id, create_date, store_fname, datas_fname from ir_atta ...

  7. Java程序猿的JavaScript学习笔记(9—— jQuery工具方法)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  8. Jquery中的(function($){...})(jQuery)

    当你第一眼看到“(function($){...})(jQuery)”的时候,你有什么感觉?呵呵呵,我当时还是止不住的从心底里骂了一句——操,这他妈什么劳什子.时过境迁,对于现在无比倚重Jquery的 ...

  9. JQuery Pagenation 知识点整理——(function($){...})应用(20150517)

    首先:(function($){...})为Jquery提供的匿名函数: 代码实例(一) <script type="text/javascript"> (functi ...

随机推荐

  1. jQuery Deferred和Promise的使用介绍:

    deferred对象是从jquery1.5.0引入的一个新对象,ES6也引入了Promise的正式规范. 抽象来说,deferreds 可以理解为表示需要长时间才能完成的耗时操作的一种方式,相比于阻塞 ...

  2. JS可维护性代码

    最近在看一本Js的书名叫“Javascript高级程序设计”在里面学到了很多东西,是一本不错的书,非常值得一看. 解耦css/javascript element.style.color=" ...

  3. ubuntu无法进入桌面的修复

    今天的kubuntu更新后停在了启动logo上,无法进入系统界面了. 先在网上找了找,搜到了一个看起来很像的. 1)ubuntu在系统启动logo过后无法进入桌面的处理方法 一般情况下,无法显示桌面, ...

  4. 【Android】 分享一个完整的项目,适合新手!

    写这个app之前是因为看了头条的一篇文章:http://www.managershare.com/post/155110,然后心想要不做一个这样的app,让手机计算就行了.也就没多想就去开始整了.   ...

  5. 一个可以提高开发效率的Git命令-- Cherry-Pick

    在实际的项目开发中(使用Git版本控制),在所难免会遇到没有切换分支开发.需要在另一个分支修改bug然后合并到当前分支的情况.之前遇到这种第一反应就是将分支合并过去来解决问题.如果你那些提交当中也穿插 ...

  6. https post

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...

  7. Yarn init 命令在 Git Bash 中打开时的错误

    最近一直在学习一些新的知识,ES5.ES6.Vue等,当然,作为程序,英文的阅读和听写能力也是要去学习的. 最近慕课网上的qbaty大神出了两套视频,分别是webpack和yarn,本着不断学习的精神 ...

  8. ubuntu的常用命令

    1. locate------根据名字找文件,例如: locate php.ini 2.find----------以目录结构的形式搜索文件, 例如:find / -type d -iname jvm ...

  9. webpack入门与解析(一)

    每次学新东西总感觉自己是不是变笨了,看了几个博客,试着试着就跑不下去,无奈只有去看官方文档. webpack是基于node的.先安装最新的node. 1.初始化 安装node后,新建一个目录,比如ht ...

  10. Loadrunner 在controller中运行socket脚本时报错:Abnormal termination, caused by mdrv process termination 的原因和解决方法

    原因: 网上给出的可能的原因大致有两个: 1.  压力负载机器的资源不足(CPU,内存) 2.  分配内存和释放内存的语句不匹配. 并给出了一些解决方案,最开始我以为是加了IP地址的原因,不断尝试增加 ...