了解Modernizr相对于html5shiv的优势

39

我知道网站上有很多关于这两个脚本库的好问题。

但我想问的是,似乎在任何一个问题中都找不到答案。

Modernizr 提供了什么功能是 html5shiv 在默认情况下没有提供的,也就是说,只包括脚本。

我知道 html5shiv "只是" 为 IE < 9 修复了 HTML5 元素,它的支持是否止步于此?

Modernizr 是否修复了 IE 浏览器上的 CSS3 问题?ie9.js 能做到吗?(我的意思是指默认情况下,没有额外的 js 代码来处理边角情况的)

与仅包含脚本的情况相比,使用 Modernizr 的优点是什么?


2
现代浏览器常用Modernizr来检测是否支持新的(CSS3 / HTML5)特性,然后代码可以处理不支持的部分。它还有所谓的“polyfills”,基本上是shim或更复杂的版本。我不完全确定与html5shiv相比,Modernizr在shim方面提供了什么,但总的来说,Modernizr通常被用来检测而不是修补。也许我错了,但这是我的想法。 - Marshall
http://blog.userinterfacemedia.com/modernizr-vs-html5shiv/ - Michael Freake
2个回答

55

它们执行不同的任务。

Modernizr 检测页面中功能的可用性,允许您为旧版浏览器提供自己的 polyfills(代码库),以便您可以在不支持 <canvas> 标签的浏览器中添加对 <canvas> 的支持,包括它的 JavaScript 接口。

Html5shiv 为旧版浏览器添加新的 html5 标签(如 <section><header> 等)。它还会创建默认样式(例如 <section>display: block)。

就这样。它不提供任何其他功能。


5
不行。它本身并不执行任何操作,只告诉你是否得到支持。如果不被支持,你可以提供一个 polyfill 来将该功能添加到浏览器中。请参见 https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills 获取可在其中使用的 polyfills 的详尽列表。 - tkone
它们实际上是互补的,尽管 :) - tkone
我对那个库没有任何经验,但它似乎试图让HTML/CSS在ie8和7中的行为像ie9一样。如果它能够正常工作,这将是我们网站的一个不错的补充!谢谢你向我展示这个! - tkone
据我所记,html5shiv还“添加了尚不可用的新的html5标签”,对吗? - Baumr
是的,它可以。IE允许您通过使用document.createElement声明来“创建”标签。 - tkone
显示剩余2条评论

40

Modernizr 1.5+ 实际上包含了HTML5Shiv,所以如果你使用它,shiv就是多余的。来源:http://modernizr.com/docs/#html5inie

"自Modernizr 1.5版本开始,该脚本与流行的html5shim/html5shiv库中使用的脚本相同。"


4
根据链接所述,“从 Modernizr 1.5 开始,该脚本与广受欢迎的 html5shim/html5shiv 库中使用的脚本完全相同。” - JGallardo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接