Write the Code. Change the World.

7月 22

现象

在js中使用 $(window).load(function(){ ...}) 时,会报下边的错误:


Uncaught TypeError: a.indexOf is not a function at r.fn.init.r.fn.load (jquery.min.js:4)

stackoverflow 中有人提到说是 jquery 的版本原因,并给出了方法。

https://stackoverflow.com/questions/38871753/uncaught-typeerror-a-indexof-is-not-a-function-error-when-opening-new-foundat

解决方法

on( load 来侦听回调。如:


$(window).on("load", function(){ console.log('load complete'); })

这样就不会报错了。不过 $(document).ready(function(){ ...}); 可以正常运行。

$(document).ready()和$(window).load()的区别

习惯了用 jquery ,原生的 api 丢一边了。$(document).ready()和$(window).load()的区别有以下几点:

  1. 执行的时间不同。

$(document).ready() 在文档准备好的时候触发。 也就是浏览器解析完完整的html文档,dom树已经建立起来,其他js, css也已经加载完成了。可以通过class属性,id属性对dom结构进行操作了。文档内的图片不一定加载完成。

$(window).load() 就是整个页面已经加载完毕。也就是图片或其他使用的资源已经加载完成。

  1. 执行次数不同。

$(document).ready() 可以被侦听多次。也就是在js中,可以对多出代码块进行侦听,都会有回调过来。

$(window).load() 只有一次侦听有效。也就是如果js中多处侦听,只有最后一次侦听的有效果。前边的的侦听不会有结果。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注