在每个浏览器中加载 html5shiv 是否有任何不良副作用?

Are there any adverse side effects to loading html5shiv in every browser?

提问人:Jeff 提问时间:10/5/2012 最后编辑:Jeff 更新时间:10/6/2012 访问量:945

问:

html5shiv Google Code 页面上,示例用法包括一个 IE 条件:

<!--[if lt IE 9]>
    <script src="dist/html5shiv.js"></script>
<![endif]-->

但是,在 html5shiv github 页面上,描述解释了:

此脚本是启用 HTML5 分段的实际方法 元素,以及默认的 HTML5 样式 在 Internet Explorer 6 - 9、Safari 4.x(和 iPhone 3.x)中, Firefox 3.x

一个明显的矛盾。因此,为了满足我的好奇心,对于任何研究过代码的人来说,在每个浏览器中加载 html5shiv 是否有任何不利影响(没有 IE 条件)?

编辑:显然,我的目标是在没有IE条件的情况下使用shiv。

JavaScript HTML 浏览器

评论


答:

4赞 Giona 10/6/2012 #1

我认为 googlecode 页面上的条件评论(可能在一年多前更新)是因为 IE8 及以下版本需要一个 javascript 技巧来允许 HTML5 元素的 css 样式

FF4、Safari 4、Opera 11 及更低版本不适用于“未知”元素,但您只需要重置 CSS 即可更改此行为。display:block

html5shiv 在这些浏览器上所做的只是在 的开头添加一个,类似于这个:<style><head>

article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
    display: block;
}

来源:http://meyerweb.com/eric/tools/css/reset/

因此,它不应该产生任何副作用,因为这些规则可以被连续的声明覆盖。

只要你在主 CSS 文件之上添加该规则,就可以有条件地仅为 IE 包含 html5shiv,你就会保存一个 http 请求。

如果你希望你的 html5 网站也与 FF2 兼容(如果是这样,你就是个疯子),请查看本教程

OP 发现的 html5shiv 已经为 FF2 提供了后备!

评论

0赞 Jeff 10/6/2012
谢谢。对于任何感兴趣的人,只要客户端在其 UA 中启用了 JavaScript,html5shiv 也可以解决 FF2 问题。
0赞 Giona 10/6/2012
谢谢@Jeff,我不知道!他们应该在他们的 GitHub :) 中编写它
0赞 B. Clay Shannon-B. Crow Raven 6/15/2013
如果这就是 html5shiv 所做的一切,为什么不直接将块添加到您的主 CSS 文件中并完成它呢?如果您的网站被古老的浏览器浏览,它会有所帮助,如果他们使用现代浏览器,它不会造成任何伤害。右?
0赞 Giona 6/15/2013
@ClayShannon html5shiv 提供了 IE8 所需的 javascript 回退,因此这些 css 行不足以保证完全的跨浏览器兼容性。直到 IE8 灭绝 ;-)