You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
HTML 2.0起放在“body标签闭合之后”就是不合标准的。之所以但是浏览器却不会报错,是因为如果在“body标签闭合之后”后再出现script或任何元素的开始标签,都是parse error,浏览器会忽略之前的,即视作仍旧在body内。所以实际效果和写在“body标签闭合之前”之前是没有区别的。所以要么放head标签里,要么放 </body> 之前。
xiangshuo1992, bertcai, ousiri, ducky-YFH, Benzic and 4 moreaoxiangsky and nightsu
Activity
[-][js] 第86天 把Script标签放在页面最底部的`</body>`之前和之后有什么区别?浏览器会如何解析它们?[/-][+][js] 第86天 把Script标签放在页面最底部的</body>之前和之后有什么区别?浏览器会如何解析它们?[/+]AnsonZnl commentedon Jul 11, 2019
因为js 可以操作DOM ,所以浏览器在渲染HTML代码时,遇到<script>标签会先解析所有的js,解析完成之后继续向下解析。所以<script>放在底部最后加载比较好,大多数都是这样的。
但是如果你的js会改变全局的样式,比如一个js文件会改变所有的字体,那就应该放在前了,,让它优先解析。
dondonZh commentedon Jul 11, 2019
前面:先解析完js再渲染界面
后面:渲染完界面再解析
pokerLife commentedon Jul 11, 2019
虚拟dom就不需要考虑这个了:dog:
zqzxy commentedon Jul 11, 2019
HTML 2.0起放在“body标签闭合之后”就是不合标准的。之所以但是浏览器却不会报错,是因为如果在“body标签闭合之后”后再出现script或任何元素的开始标签,都是parse error,浏览器会忽略之前的,即视作仍旧在body内。所以实际效果和写在“body标签闭合之前”之前是没有区别的。所以要么放head标签里,要么放
</body>
之前。nowherebutup commentedon Jul 11, 2019
放在之前,解析到script标签的时候,解析中断,并且阻断其他HTML解析(因为HTML并不知道js里面会不会有什么改变DOM结构,故在此中断);
放在之后,DOM渲染完成,不过,用户操作页面的时候,有可能js还没响应
Vi-jay commentedon Aug 1, 2019
放在DOM之前 先解析 执行完js再解析DOM 放在之后 则先解析渲染完DOM在执行js 所以放在DOM之前js拿不到DOM
smile-2008 commentedon Feb 26, 2021
zxcdsaqwe123 commentedon Dec 14, 2021
由于浏览器的解析顺序是由上至下,由左至右的,如果script放在body上面,其代码可能无法获取到body里的元素,除非是写在window.onload里面
xiaoqiangz commentedon Jun 22, 2022
浏览器解析顺序是从下到下,如果script放在body上面,可能会导致js代码里无法获取dom元素,一般是在window.onload触发后再去操作dom元素,或着放在body下面等待dom元素先挂载完毕。