繁体   English   中英

async modernizr可以吗?

[英]Is it okay to async modernizr?

Google PageSpeed测试告诉我使用async

例如改变

<script src="//cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>

<script async src="//cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>

现代化器还能正常工作吗?

Modernizr需要放在<head>中有两个原因:

  1. html5shiv需要在那里为oldIE。
  2. 在使用带有现代化的类来进行特征条件样式时避免使用FOUC

如果这些都不重要,您可以使用async属性和/或将其放在底部。

看看在Modernizr发布的这个问题

Modernizr 不需要放在<head>

无论何时包含它,Modernizr都将最终正常工作。

如果你使modernizr脚本异步 ,或者在一些重要的页面加载事件之后包含它( DOMContentLoadedwindow.onload ...)

  • 应用特定的css规则( feature ,文档head no-feature类) 将被延迟
  • window.Modernizr也会被延迟,连同它的对象属性(即Modernizr.propery

简而言之,

  • 如果你使用Modernizr的async加载可能会发生在CSS坏事是不合适的样式(依赖于<html>类的那些)应用了一段时间
  • 你的JS代码可能发生的坏事是,如果你使用Modernizr全局对象,你可能不会直接使用它,也可能不会被加载 - 你将不得不以某种方式等待它 所以,不再:

if(Modernizr.cssanimations){
    // your feature-dependant code
}

但反而:

if(typeof Modernizr !== "undefined"){
//uitilize Modernizr global object here
} else {
// implement waiting for this object, let's say write short onModernizrLoad() function...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM