HTML5的DOCTYPE是不是在IE8触发标准模式(The HTML5 doctype is no

2019-07-03 18:04发布

我为在那里我们所有的网站目前使用XHTML 1.0过渡的doctype(是的,我知道这是很老派)的公司工作。 我想改变他们所有使用HTML5的doctype看到它是向后兼容的。 其中一个原因我想使交换机的原因是因为在IE8,如果有人安装了开发者工具,则旧XHTML文档类型切换到浏览器的兼容模式,并呈现页面IE7。 从它读了我被带领相信HTML5 DOCTYPE将设置任何页面在标准模式来呈现,但是当我测试了我们的临时服务器仍然翻转到IE7渲染模式上,这是没有发生。

奇怪的是,如果我保存该页面与HTML5的doctype本地并打开它,它是在IE8标准模式呈现。 必须有别的东西造成它拖放到兼容性IE7渲染。 任何想法,这可能是什么呢?

下面是测试页面我一直在寻找的头:

    <!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 &amp; fashion retailers, with a range of men's clothing designed to make you look &amp; feel good. Find formal &amp; casual clothes &amp; 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>

Answer 1:

有一对夫妇在IE 8的设置,可能会导致网页在兼容模式下呈现,无论网页的HTML内容或HTTP头:

  1. 首页>兼容性视图设置

    • 如果“在兼容性视图中显示Intranet站点”被选中,那么IE将呈现在兼容性视图在本地网络上的所有网站。 (这发生在我身上开发过程中几次。)

    • 如果“包括更新微软的网站列表”选项,那么IE就会从微软下载的网站列表和使它们都在兼容性视图。

    • 如果“显示在兼容性视图所有网站”被选中,然后,嗯,你猜会发生什么。

  2. 工具> Internet选项>高级>浏览

    • 如果“从与兼容性视图的页面布局错误自动恢复”被选中,那么IE有时会切换到兼容性视图,如果它认为一个页面的布局被打破。

  3. 最后,如果您导航到一个页面,然后点击页面>兼容性视图(或点击地址栏中的兼容性视图图标),则该页面将在兼容性视图渲染。

所以,虽然它的价值将X-UA-Compatible在那里,并使用像HTML5一个文档类型(让你的意图是明确的),总是先检查这些设置进行测试时。



Answer 2:

我不知道这会有所帮助,但在IE9,你必须使用:

<!DOCTYPE html>

和下面的meta标签:

<meta http-equiv="X-UA-Compatible" content="IE=9">

这两个测试的组合之后,这里是我的发现:

  • 没有文档类型或Meta标签:
    Quirks模式,IE发动机= 5

  • DOCTYPE只有:
    标准模式,即,发动机= 7

  • 文档类型和Meta标签
    标准模式,即,发动机= 9

  • Meta标签只有
    标准模式,即,发动机= 9

如何detemine模式类型和发动机:

  • document.compatModeCSS1Compat =标准模式,否则你在怪癖模式

  • document.documentMode :返回IE是使用以呈现文件,其中发动机


笔记:

  • 通常文档类型必须是在你的文件的第一行。 我不知道,但我觉得一个XML标签可以在它前面。 如果别的它之前你可能会打破你的DOCTYPE声明:
  • 元标记必须放置在<HEAD>
  • 你交的25天之久,所以我假设你有一个解决方案。 即便如此,我不知道如果这些IE9设置是否适合您的问题。 你必须检查window.document.compatModewindow.document.documentMode ,以确定它们是否IE8下是有活力
  • 元标记改变为<meta http-equiv="X-UA-Compatible" content="IE=8">
  • Altough也可以只使用元标签,我不建议使用它不用doctype。 因为这可能会导致与XML,CSS和脚本问题

我花了几个小时试图弄清楚这一点,并发布这篇文章,所以我希望有人实际上得到一些使用了我的研究。 可在源和你在一起......



Answer 3:

无论是XHTML 1.0过渡DOCTYPE(在规范中使用时,与URL)和<!doctype html>触发“标准模式”在IE中。 如果不这样做,有一个大概也没什么用DOCTYPE换做多种原因(而且只能如果附加信息进行分析,如URL,可用); 见IE 8和IE 9并发症在激活与文档类型浏览器模式

更改为<!doctype html>是没有意义的,一个潜在的问题,除非你不是真正改变的标记。 在验证,这是其他原因使用文档类型,它会导致完全不同的分析和经常错误有关在XHTML 1.0有效构建消息。



文章来源: The HTML5 doctype is not triggering standards mode in IE8