HTML页面中JS的加载原理: 在加载HTML页面的时候,在外链的JS文件中,浏览器必须先花时间下载外链文件中的代码,然后解析并执行它,在这个过程中,页面的渲染和用户互交完全被阻塞。由于现代浏览器都允许并行下载JS文件,因此<script>标签在下载外部资源时不会阻塞其他的<script>标签。遗憾的是JS下载过程仍然会阻塞其他资源的下载。
浏览器从页面顶部逐行读取代码后,不同的产品使用了不同的策略。
chrome采用的方式是立刻渲染读取到的html,如果遇到js脚本则立刻执行,执行完成后继续渲染下面的html。
firefox是先逐行读取html代码,但并不立即渲染。如果读到js代码就会即刻执行,等页面读取完毕一并渲染html。
经过对二者的测试,得出chrome的方式使用户会尽早的看到页面样式,体验更好。
<!DOCTYPE html> <html> <head> <title>测试浏览器渲染</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> body { background-color: navy; color:#ffffff; } </style> </head> <body> <img src="icon.png"> <div>渲染html</div> <div id="test">正在执行...</div> <script type="text/javascript" src="jquery.js"></script> <script> var end = 400000; for(i=1;i<end;i++) { $("#test").html("执行js"+i); } </script> </body> </html>
分别在chrome v45.0.2454.93 m和firefox v42.0测试。