ama*_*eur 61 javascript html-head modernizr
应该是对Modernizr JavaScript文件的引用是否在页面的头部?我总是尝试将所有脚本放在页面底部,并希望保留它.如果它需要在头脑中,为什么?
Wes*_*rch 71
如果您希望Modernizr尽快下载并执行以防止FOUC,请将其放入<head>
从他们的安装指南:
删除
<head>HTML中的脚本标记.为了获得最佳性能,您应该在样式表引用后跟随它们.我们建议将Modernizr置于头部的原因有两个:HTML5 Shiv(在IE中启用HTML5元素)必须在之前执行<body>,如果您使用的是Modernizr添加的任何CSS类,您将需要防止FOUC.
Chr*_*ams 55
我认为不会:你在<head>遗嘱中放置的每个脚本都会阻止渲染和进一步的脚本执行.Modernizr唯一必须做的<head>就是集成的html5shiv,它将HTML5标记支持破解到Internet Explorer 8及更早版本中.
我昨天对此进行了测试并发现这相当重要 - 在我工作的网站上,已经相当好的优化,在IE9中将单个脚本添加到头部延迟了大约100毫秒,这甚至都没有从shiv中受益!
由于大约90%的流量来自本机支持HTML5的浏览器,而且我没有核心CSS,需要在初始渲染中正确显示modernizr类,我使用这种方法将html5shiv置于条件注释中在没有集成垫片的情况下加载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>
Run Code Online (Sandbox Code Playgroud)
Dav*_*och 34
Paul Irish现在建议,对于75%以上的网站,将Modernizr放入网站是没有好处的head.
将Modernizr移到底部
它更有可能引入意想不到的情况,但是对于用户来说根本没有脚本就更好了.
我打赌> 75%的网站不需要它.我宁愿改变这个默认值,并教育25%而不是观看,因为我们放慢了所有这些网站的速度.
https://github.com/h5bp/html5-boilerplate/issues/1605
red*_*x05 15
如何以稍微不同的方式使用IE条件?每个人都想到这个解决方案:
在<head></head>标签内:
<!--[if lt IE 9 ]>
<script src="/path/to/modernizr.js"></script>
<![endif]-->
</head>
Run Code Online (Sandbox Code Playgroud)
在</body>标签结束之前:
<!--[if gt IE 8]><!-->
<script src="/path/to/modernizr.js"></script>
<!--<![endif]-->
</body>
Run Code Online (Sandbox Code Playgroud)
这将导致Modernizr加载到IE8及更低版本的头部,并且它将在任何其他浏览器的主体之前加载.
在评论中欢迎公开讨论利弊.