IE和HTML5 doctype问题

时间:2012-02-13 18:04:52

标签: html5 internet-explorer html5boilerplate

我正在使用优秀的HTML5样板文件。这是一个很棒的项目但我在IE 8和7中有一些大问题(可能是8但还没有尝试过)

这些文件包含HTML5 doctype:

<!doctype html>
<head>

但问题是没有完整而丑陋的doctype,如......

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

我得到了各种渲染问题:以边距为中心:auto不起作用,高度,宽度,集合和填充都表现得像疯了一样,我的所有布局都被<!doctype>打破但是如果切换到旧的,一切都很好(好吧,不是很好,它仍然是IE,但正如预期的那样)

HTML5 Boilerplate随附了Modernizer,我认为应该解决这个问题,但它不起作用。从我的“研究”(谷歌)我发现IE进入怪癖模式宽度<!doctype>,所以问题是......

有没有办法阻止IE使用<!doctype>进入怪癖模式?

或者至少不要破坏边距,宽度,填充等?

编辑:这是完整的负责人:

<!doctype html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
  <meta charset="utf-8">

8 个答案:

答案 0 :(得分:16)

IE不会进入具有该doctype的怪癖模式。样板应该修复IE问题,而不是引起它们。您缺少doctype之后的<html>元素。添加它以查看是否有变化。 HTML5并不需要它,但如果缺少,IE或样板可能会根据文档发疯。

另外,只需删除doctype之后的注释,这样就可以解决问题。

答案 1 :(得分:9)

尝试将其放入<head></head>标记:

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

如果它已经存在,则将其删除,您可能会收到所需的结果。

答案 2 :(得分:7)

IE不会对HTML doctype产生任何疑问 - 这就是重点!

  

这个新的DOCTYPE有什么好处,尤其是当前的所有   浏览器(IE,FF,Opera,Safari)将查看它并切换   内容进入标准模式 - 即使它们没有实现HTML5。   这意味着您可以使用HTML5开始编写网页   今天,让它们持续很长很长时间。

(http://ejohn.org/blog/html5-doctype/)

但是,在doctype(换行符,注释等)之前有任何内容。

我会检查你在做什么 - HTML5 doctype不会让你的浏览器陷入困境。

答案 3 :(得分:1)

尝试将文件另存为无BOM的UTF-8 。它帮助了我。

答案 4 :(得分:0)

我不太喜欢“wiz”,但是不能用有条件的html来为IE8及以下版本声明HTML 4.01 doctype:

<!-- HTML 5 doctype -->
<!doctype html>

<!-- HTML 4.01 Doctype -->
<!--[if lte IE 8]>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<![endif]-->

如果这在旧浏览器中不起作用(由于浏览器读取两种文档类型),您可以尝试这样做:

<!DOCTYPE HTML <!--[if lte IE 8]>PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"
<![endif]-->>

答案 5 :(得分:0)

很可能它会与条件注释进入兼容模式。我们建议您在.htaccess文件或其他服务器配置文件中设置x-ua-compatible标头服务器端。

答案 6 :(得分:0)

我发布您发布的标题标记没有错。这是一个广泛用于样板的标准标记,包括Modernizr,这是一个用于检测浏览器功能的漂亮的JavaScript库。

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

我在我当前的应用程序中使用它并且在任何浏览器上都没有问题。虽然我这样使用它:

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>

为了测试IE条件评论,我在IE9IE8IE7上测试了大写和小写 doctype ,用于仔细检查。

我在IE7上观察到的唯一奇怪的事情是,当我使用 <!doctype html> 代替<时,webfonts(我的应用中的所有四个)都无法呈现EM> <!DOCTYPE html>

仅供参考:我刚刚在2013年9月24日检查并看到HTML5 Boilerplate Projectremoved support for IE conditional comments。我无法确认何时向项目引入了条件评论,但可以看到{{3在2010年1月24日。

答案 7 :(得分:-4)

尝试DOCTYPE html而不是doctype html doctype标签区分大小写,这就是原因。