javascript - 把JS放在body尾部,还有必要用JQuery的$(document).ready()方法吗?
阿神
阿神 2017-04-10 16:11:48
[JavaScript讨论组]

我觉得如果JS放在尾部的话,浏览器已经渲染过页面了吧,不知道JS这时候用$(document).ready()或者JS原生的DOMContentLoaded事件吗?还有什么用?本人还处于JS入门,望了解页面渲染过程的人来说说这方面的知识。

阿神
阿神

闭关修行中......

全部回复(7)
大家讲道理

一般是不需要的,但是$(document).ready()同时可以作为触发事件的条件,触发时机就是当DOM加载完成时。

阿神

最好是加上,不过不加影响也不大。
浏览器是顺序加载网页的
如果放在前面,浏览器会在加载 DOM 前加载并执行那些代码(执行代码耗费时间的话后面的DOM也是要等到执行完再加载),如果其中有涉及 dom 操作的代码必然会失败。
如果放到最后,就是在代码前面的 DOM 加载完毕后加载并执行这些代码(如果代码有操作后面的dom也会失败)。所以说放到最后因为执行代码的时候几乎所有DOM都加载完了,所以一般也不会出问题。
$(document).ready()这句也是在所在的位置执行,但不同的是这句只是定义并注册了一个函数,函数代码并没有执行,而是在所有DOM加载完毕之后执行,所以只要你代码不出错就不会有问题。
所以,建议是加上,实在太懒不加也行

高洛峰

如果js代码放在文档末尾是不用onload()的,同理,jq代码放在末尾也可以不用ready()

迷茫

应该是一样的效果,之所以js放到最后,也就是为了防止页面加载阻塞,但是其中onload是在页面Dom和其他元素都加载完之后触发,而$(document).ready()是在页面Dom加载之后触发,就是$(document).ready()是快于onload的。

黄舟

个人感觉还是有必要加上的。虽然不加大多数时候都不会出错,但是有的时候也会出问题,具体没有深入学习过。
比如学习angular的时候,

// 作用相当于ng-app 有点类似声明模块的意思
angular.bootstrap(document, ['app']);

直接这样写就没有效果,加个window.onload就有效果了,我也不知道为什么— -!

PHP中文网

持久的习惯->优秀的规范->低误差率->高生产率->提升价值
看,每一个小的习惯,积少成多,就是价值的来源。
简约计算,相当于你的体重不是按猪肉价在卖了,而是升级到了新西兰进口流肉的价了啊,兴奋否?!

阿神

有必要的吧,如果做一些DOM操作,元素定位什么的应该需要的

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号