曾几何时,< head>
或< body>
中的< script>
引起了激烈的争论。
许多SO帖子已经指出最佳做法 / 经验法则是放置 < script>
在< body>
结束之前,不阻止html解析器,从而加快了第一次屏幕绘制和客户端更快的DOM访问速度,从而提供了更好的用户体验。



这必须是重复的╰(`□')╯


等待... &lt; script&gt; < / code>现在可以
deferred
,实际上已经有一段时间了!
旧帖子说
&#xA;&#xA ;&#XA;&#xA;&#xA;延迟脚本可能导致JS依赖性问题
&#xA;
不,它不会。它在解析DOM时立即保留执行顺序。
&#xA;&#xA;&#xA;&#xA;&#xA;它不适用于跨供应商
&#xA;
是的,它曾经是,但今天它几乎得到所有主要浏览器供应商的支持: http://caniuse.com/#search=defer ,除了IE可能有问题&lt; 10正如评论所指出的那样。
&#xA;&#xA;然而,它提供的好处似乎是显而易见的,至少在我看来,因为它在早期时间(在开始解析之前)并行下载脚本DOM),因此无需稍后请求脚本并缩短整个页面交互式所需的时间。
&#xA;&#xA;简而言之,这个问题类似于:任何有理由不使用
&#xA;&#xA; &lt; head&gt;&#xA; ...&#xA;&lt; script src = 'cdn / to / jquery'defer&gt;&#xA;&lt; script src ='cdn / to / bootstrap'defer&gt;&#xA;&lt; script src ='script / depends / on / jqueryandbootstrap'defer&gt;&#xA ;&lt; / head&gt;&#xA;
&#xA;&#xA; 改为使用:
&#xA;&#xA; &LT;身体GT;&#XA ;. ..&#xA;&lt; script src ='cdn / to / jquery'&gt;&#xA;&lt; script src ='cdn / to / bootstrap'&gt;&#xA;&lt; script src ='script /依赖/ on / jqueryandbootstrap'&gt;&#xA;&lt; / body&gt;&#xA;
&#xA;&#xA; &#xA;注意:这个可能是一个有很多讨论的“古老”话题。但是,随着Web技术的快速发展,浏览器供应商更好地与新的Web规范保持一致,许多旧的stackoverflow答案可能无法保持最新。&#xA;
&#xA;答案 0 :(得分:3)
是的,但这只是因为你正在使用jQuery。
jQuery doesn't work with defer
因为它会在页面变为交互式时立即触发。他们可以很快修复它(我在一年前提出了这个错误),因为改变准备行为以使用defer
会破坏许多依赖于jQuery准备事件触发的组件on interactive(即在延迟脚本完成加载之前)。
如果您正在使用更现代的框架(React,Angular 2,Polymer,Vue或其他任何东西),那就去吧 - 或者甚至转到下一步并使用<script type=module
IE浏览器中的新浏览器和旧版捆绑包。{/ 1}。
答案 1 :(得分:0)