Modernizr JavaScript 文件的引用应该放在页面头部吗?我经常尝试将所有脚本放在页面底部,并且想要保持这个习惯。如果需要放在头部,为什么?
Modernizr JavaScript 文件的引用应该放在页面头部吗?我经常尝试将所有脚本放在页面底部,并且想要保持这个习惯。如果需要放在头部,为什么?
昨天我测试过这个,并发现这相当重要-在我正在工作的网站上,已经相当优化的情况下,在IE9中将单个脚本添加到头部将延迟我的加载时间约100毫秒,而IE9甚至无法从shiv中受益!
由于约90%的流量来自本地支持HTML5的浏览器,并且我没有核心CSS需要使用modernizr类在初始渲染中正确显示,因此我使用这种方法,将html5shiv放入条件注释中,并加载不带集成shim的modernizr:
<html>
<head>
…
<!--[if lt IE 9]>
<script src="html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
…
<script src="modernizr.custom.min.js"></script>
</body>
</html>
Paul Irish建议对于超过75%的网站没有必要在标签中放置Modernizr。
将Modernizr移到底部
它有可能引入意外情况,然而对于用户来说,在标签中没有任何脚本要好得多。
我敢打赌,超过75%的网站不需要在标签中使用它。我宁愿更改这个默认设置并教育那剩下的25%,也不想看到我们减缓所有这些网站的速度。
如何以略微不同的方式使用IE条件语句呢?大家对这个解决方案怎么看?
在 <head></head>
标签内:
<!--[if lt IE 9 ]>
<script src="/path/to/modernizr.js"></script>
<![endif]-->
</head>
在 </body>
结束标签之前:<!--[if gt IE 8]><!-->
<script src="/path/to/modernizr.js"></script>
<!--<![endif]-->
</body>
这将导致Modernizr在IE8及以下版本中加载到头部,并且在任何其他浏览器中它将在标签之前加载。