2

我从未使用过 HTML5 或 CSS3。我只是在学习并计划稍后在 Web 项目中使用它们。如果我们只是在页面中包含modernizr js文件,这不能帮助我们检测哪个功能有效,而是我们需要为modernizr后备系统编写代码,然后我们决定如何处理不支持任何HTML5功能的情况浏览器。这是一个modernizr后备示例

Modernizr.load({
  test: Modernizr.canvas,
  nope: 'http://flashcanvas.net/bin/flashcanvas.js'
});
  1. 如果 Modernizr 可以处理任何浏览器,那么我为什么要使用 HTML5shiv 库?
  2. 为什么页面上已经使用了 Modernizr 时需要包含 HTML5shiv?
  3. HTML5shiv 库如何工作?它是否仅通过包含它就解决了所有 IE 问题?
  4. HTML5shiv 是否提供任何后备系统?
  5. 如果浏览器是 IE,如何有条件地加载 HTML5shiv 库?

请使用代码示例提供您的答案。

期待讨论。谢谢

4

1 回答 1

2

如果 Modernizr 可以处理任何浏览器,那么我为什么要使用 HTML5shiv 库?

为什么页面上已经使用了 Modernizr 时需要包含 HTML5shiv?

您不需要单独包含 html5shiv,因为 Modernizr 包含它。从 Modernizr 1.5 开始,此脚本与流行的 html5shim/html5shiv 库中使用的脚本相同

HTML5shiv 库如何工作?它是否仅通过包含它就解决了所有 IE 问题?

html5shiv 只允许 IE 识别和设置 HTML5 元素。而已。

HTML5shiv 是否提供任何后备系统?

不,只有 Modernizr 支持特征检测。请注意,Modernizr 本身不会给您后备。您可以使用yep/nope为您想要支持的功能提供 polyfill 或回退

如果浏览器是 IE,如何有条件地加载 HTML5shiv 库?

使用条件 HTML 注释,这将在 9 以下的 IE 版本上加载 html5shim

<!--[if lt IE 9]>
<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
于 2013-07-11T08:23:46.490 回答