HTML5 doctype没有触发IE8中的标准模式
我在一家公司工作,我们的所有网站目前都使用XHTML1.0过渡doctype(是的,我知道这是一个非常古老的模式)。我想将它们全部更改为使用HTML5 doctype,因为它是向后兼容的。我想切换的原因之一是,在IE8中,如果有人安装了开发人员工具,那么旧的XHTML doctype会将浏览器切换到兼容模式,并将页面呈现为IE7。通过阅读,我相信HTML5 doctype会将任何页面设置为以标准模式呈现,但当我在登台服务器上测试它时,它仍然会切换到IE7呈现模式 奇怪的是,如果我用HTML5 doctype本地保存页面并打开它,它将以IE8标准模式呈现。一定是其他原因导致它进入兼容IE7渲染。你知道这是什么吗 下面是我一直在看的测试页面的标题:HTML5 doctype没有触发IE8中的标准模式,html,internet-explorer-8,doctype,ie8-compatibility-mode,Html,Internet Explorer 8,Doctype,Ie8 Compatibility Mode,我在一家公司工作,我们的所有网站目前都使用XHTML1.0过渡doctype(是的,我知道这是一个非常古老的模式)。我想将它们全部更改为使用HTML5 doctype,因为它是向后兼容的。我想切换的原因之一是,在IE8中,如果有人安装了开发人员工具,那么旧的XHTML doctype会将浏览器切换到兼容模式,并将页面呈现为IE7。通过阅读,我相信HTML5 doctype会将任何页面设置为以标准模式呈现,但当我在登台服务器上测试它时,它仍然会切换到IE7呈现模式 奇怪的是,如果我用HTML5 d
<!DOCTYPE html >
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<title>Burton - Mens Clothing - Mens Fashion - Burton Menswear</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="Burton is one of the UK's leading men's clothing & fashion retailers, with a range of men's clothing designed to make you look & feel good. Find formal & casual clothes & accessories for men online at Burton menswear"/>
<meta name="keywords" content="menswear, clothes for men, clothing for men, men clothes, men's fashion, men's wear, men's clothing online, men's clothes online, men's clothes shop, burton men's, burton menswear, burton uk, burton"/>
<script type="text/javascript">document.getElementsByTagName('html')[0].className = 'js';</script>
<link rel="stylesheet" type="text/css" href="http://eu.burton-menswear.com/wcsstore/ConsumerDirectStorefrontAssetStore/images/colors/color2/v3/css/screen.css" />
<link rel="stylesheet" type="text/css" href="http://eu.burton-menswear.com/wcsstore/ConsumerDirectStorefrontAssetStore/images/colors/color2/v3/css/print.css" media="print"/>
<link rel="stylesheet" type="text/css" href="http://eu.burton-menswear.com/wcsstore/ConsumerDirectStorefrontAssetStore/images/colors/color2/v3/css/brand.css" />
<!--[if lt IE 8]>
<link rel="stylesheet" href="http://eu.burton-menswear.com/wcsstore/ConsumerDirectStorefrontAssetStore/images/colors/color2/v3/css/ie.css" type="text/css" media="screen, projection">
<![endif]-->
<meta http-equiv="content-language" content="en-gb" />
<link rel="shortcut icon" type="image/x-icon" href="http://eu.burton-menswear.com/favicon.ico" />
<link rel="search" type="application/opensearchdescription+xml" title="burton.co.uk Search" href="http://eu.burton-menswear.com/burton-search.xml"/>
<!-- Start Summit Tag -->
<script type="text/javascript">
var __stormJs = "t1.stormiq.com/dcv4/jslib/3286_D92B7532_4A18_46A8_864A_5FDF1DF25844.js";
</script>
<script type="text/javascript" src="http://eu.burton-menswear.com/javascript/track.js"></script>
<!-- End Summit Tag -->
<!-- Start QuBit Tag -->
<script src=//d3c3cq33003psk.cloudfront.net/opentag-31935-42109.js async defer></script>
<!-- End QuBit Tag -->
<link type="text/css" rel="stylesheet" href="http://reviews.br.wcstage.arcadiagroup.ltd.uk/bvstaging/static/6028-en_gb/bazaarvoice.css" ></link>
</head>
伯顿-男装-男装时尚-伯顿男装
document.getElementsByTagName('html')[0]。类名='js';
var\uuu stormJs=“t1.stormiq.com/dcv4/jslib/3286\u D92B7532\u 4A18\u 46A8\u 864A\u 5FDF1DF25844.js”;
IE 8中有几个设置可以使页面以兼容模式呈现,而不管页面的HTML内容或HTTP标题是什么:
- 如果选中“在兼容性视图中显示intranet站点”,则IE将在兼容性视图中呈现本地网络上的所有站点。(在开发过程中,我曾多次遇到这种情况。)
- 如果选中“包含Microsoft更新的网站列表”,IE将从Microsoft下载网站列表,并在兼容性视图中呈现所有网站
- 如果勾选了“在兼容性视图中显示所有网站”,那么,您可以猜到会发生什么
- 如果选中“使用兼容性视图自动恢复页面布局错误”,则IE有时会在认为页面布局已损坏时切换到兼容性视图。
因此,尽管将
X-UA-Compatible
放入其中并使用类似HTML5的doctype(以便您的意图明确),但在测试时始终首先检查这些设置。XHTML1.0过渡doctype(当由规范使用时,带有URL)和
都会触发“标准模式”在IE中,如果没有发生这种情况,则可能有许多原因与doctype更改无关(并且只有在有其他信息(如URL)可用时才能进行分析);请参见使用Doctype激活浏览器模式中的
更改为
是毫无意义的,也是一个潜在的问题,除非您实际上没有更改标记。在验证中,这是使用doctype的另一个原因,它会导致完全不同的分析,并且经常会出现关于XHTML 1.0中有效的构造的错误消息。我不确定这是否有帮助,但在IE9中,您必须使用:
<!DOCTYPE html>
和以下元标记:
<meta http-equiv="X-UA-Compatible" content="IE=9">
在测试了这两者的组合后,我发现:
- 没有Doctype或Meta标记:
怪癖模式,即发动机=5 - 仅Doctype:
标准模式,即发动机=7 - Doctype和Meta标记
标准模式,即发动机=9 - 仅元标记
标准模式,即发动机=9
:document.compatMode
=标准模式,否则您将处于怪癖模式CSS1Compat
:返回IE用于呈现文档的引擎document.documentMode
注:
- 通常Doctype必须是文件的第一行。我不确定, 但我认为XML标记可以放在它前面。如果有什么先例的话 您可能会破坏您的doctype声明:
- 元标记必须放在
- 你的帖子已经发了25天了,所以我想你有一个解决方案。即便如此,我也不确定这些IE9设置是否适合您的问题。您必须检查
和window.document.compatMode
,以确定它们在IE8下是否可行window.document.documentMode
- 将元标记更改为
- 尽管可以只使用meta标记,但我不建议在没有doctype的情况下使用它。因为这可能会导致XML、CSS和脚本出现问题
我花了几个小时试图弄明白这一点,并发表了这篇文章,所以我希望有人真的能从我的研究中得到一些帮助。愿源头与你同在……暗中刺杀。。但是,请尝试将其添加到您的
:
xmlns=”http://www.w3.org/1999/xhtml“
应该是问题所在。谢谢保罗,这真的很有帮助。在兼容模式下显示intranet站点已勾选。为了安全起见,我想我也会添加与X-UA兼容的meta标记。@ElGuapo:不客气,我已经被这件事抓住过好几次了,和我一起工作的测试人员也是如此。IE 8有一个“兼容性视图设置”界面,它不包含所有的兼容性视图设置,这有点令人恼火,但内联网界面似乎是一个通常会让人感到困惑的界面,这是一个可以理解的默认界面。嗨,Jukka,将doctype改为HTML5似乎是明智的做法,因为我们开始在我们的网站上做更多的HTML5内容(特别是视频)——为什么