hkt1998

hkt1998

新版Edge浏览器无兼容模式

2023-05-27

浏览器兼容模式是什么?

浏览器的兼容模式是一种解决旧浏览器无法正确显示新网站的方案。浏览器检测到网站使用了新的 HTML 或 CSS 特性时,可能切换到兼容模式。在兼容模式下,浏览器使用旧的渲染引擎,以确保新网站能够在旧浏览器或旧网站上正确显示。尽管兼容模式可以解决兼容性问题,但它会导致浏览器性能下降,加载速度变慢,同时也可能会影响页面布局和样式。因此,我们应该尽可能避免使用兼容模式,采用渐进增强和优雅降级的策略,以提供更好的用户体验。

DOCTYPE声明

DOCTYPE声明是为了告诉浏览器解析器使用哪种HTML或XHTML规范来解析页面。该声明必须放置在HTML文档的开头处,位于HTML标签之前。DOCTYPE声明不是HTML标签,也不是XML标签,它只是告诉浏览器该文档使用哪个DTD(文档类型定义)来解析文档。

在HTML5中,DOCTYPE声明非常简单,只需使用以下一行即可:

<!doctype html>

这是因为HTML5不再基于SGML或XHTML,而是一种独立的标记语言。

在之前的HTML版本中,DOCTYPE声明比较复杂。例如,HTML 4.01的DOCTYPE声明如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"<http://www.w3.org/TR/html4/strict.dtd>">

除了指定DTD,DOCTYPE声明还可以包含额外的信息,例如字符集和语言。

通过响应头指定文档模式

在响应头中添加 X-UA-Compatible,或者在meta标签指定文档模式。

<!doctype html>
<html>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
<head>
</head>
<body>

参考:钱文祥《白帽子讲浏览器安全》第 58 页

X-UA-Compatible 属性

X-UA-Compatible 属性是 IE 浏览器在 IE8 版本开始提供的一个特性,允许开发者通过设置 meta 标签来指定浏览器应该使用何种文档模式来解析页面。它可以指定为以下两种形式之一:

  • X-UA-Compatible: <mode>

  • X-UA-Compatible: IE=<mode>

其中,<mode> 可以是以下值之一:

  • edge:使用最新版本的浏览器渲染引擎来解析页面。

  • ie=edge:使用最高版本的 IE 渲染引擎来解析页面。

  • ie=<version>:使用指定版本的 IE 渲染引擎来解析页面。

使用 X-UA-Compatible 响应头可以让网站在新版浏览器中以指定的兼容性模式运行,而不需要在 HTML 中添加文档类型声明。这对于一些老旧的网站来说非常有用,可以帮助它们在新版浏览器中正确地呈现。

然而,新版 Microsoft Edge 慢慢不再支持兼容性模式,只支持文档类型声明。因此,最好的做法是在 HTML 中指定文档类型声明,而不是在响应头中使用 X-UA-Compatible