2011-11-10 60 views
1

我使用的是HTML5 Boilerplate,直到现在,当我开始使用Selectivizr时,它从未遇到过问题。出于某种原因,我不明白,IE8产生了Javascript错误。HTML5 Boilerplate +条件注释

一些测试后,我注意到,当我停止使用条件浏览器评论说,一个类添加到html取决于浏览器(样板中)正在使用的错误不见了:

<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]--> 
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]--> 
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]--> 
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]--> 

由于我说,当我删除上面的代码并用<html>代替它时,一切正常。

因为我不想彻底删除有条件的意见(他们帮我写的浏览器特定的CSS),我认为做同样的,但不是把它应用到html我将做到这一点的<body>

<!--[if lt IE 7]> <body class="no-js ie6 oldie" lang="en"> <![endif]--> 
<!--[if IE 7]> <body class="no-js ie7 oldie" lang="en"> <![endif]--> 
<!--[if IE 8]> <body class="no-js ie8 oldie" lang="en"> <![endif]--> 
<!--[if gt IE 8]><!--> <body class="no-js" lang="en"> <!--<![endif]--> 

一切似乎工作正常,但由于我是一个新手,我只想验证这种解决方法是好吗?还是有一个缺点?

还有一个问题偏题:当用户使用Firefox或Chrome访问该网站时,会“使用”哪些body?我猜这会“没用上课”body

我的逻辑会告诉我写另一个条件注释,以确保所有其他浏览器都使用body,但是在官方Boilerplate模板中没有这样的注释存在,因此我猜测它不需要......为什么不?

回答

3

我们实际上最初把它们放在了<body>标签上。 :)

我们搬到他们的两个小原因:

  • 的多类名的bug在IE6
  • CMS使用body元素为自己班的。

您可以将类移到<body>,没有太大问题。您也可以在HTML元素上留下lang=en,清理东西。

更多DEETS这里:https://github.com/h5bp/html5-boilerplate/issues/44

+0

此外,如果你可以提交票证与有关您的IE8的问题selectivizr,你应该。 :) –

+0

感谢您花时间研究它!现在我将使用'body'标记+我将用selectivizr提交一张票,如果他们可以解决问题,我将撤销这些更改。 – Andrej