在Internet Explorer中以Quirks模式加载页面 - 文档类型已注释掉

Page loading in Quirks mode in Internet Explorer - doctype commented out

本文关键字:文档 类型 注释 Explorer Internet 中以 Quirks 加载 模式      更新时间:2023-09-26

我遇到了一个问题,即所有版本的IE都以Quirks模式在我的网站上呈现一个页面。通过单击以下链接在新窗口中打开此页面:

<a href="javascript:void(0);" onclick="popUp();" target="popupWindow">Launch Processor</a>

窗口使用以下js确定:

function popUp(contactId) {
"use strict";
var url, width, height, leftPos, topPos, targetWin;
url = '/company/process';
if (contactId !== undefined && contactId !== null && contactId > 0) {
    url += '?contact_id=' + contactId;
}
width = 900;
height = 800;
leftPos = (screen.width / 2) - (width / 2);
topPos = (screen.height / 2) - (height / 2);
targetWin = window.open(url, 'popupWindow', 'toolbar=no, location=0, directories=no,     status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=' + width + ',     height=' + height + ', top=' + topPos + ', left=' + leftPos).focus();
}

现在,经过大量的研究,我已经尝试了所有方法,并阅读了这里提出的各种其他问题,这些问题记录了相同的问题,比如这个和这个。

我已经在我的文本编辑器中检查了我的文件,并在IE和Chrome中查看源代码(不使用IE中的检查器工具或开发人员工具),并且在doctype之前没有空格,字符或其他可能干扰的东西。在IE开发人员工具中查看文档类型,尽管我看到它已被注释掉。这与我在站点范围内使用的文档类型结构(来自HTML5样板)相同。没有其他页面有此问题。文档类型声明和元项目如下:

<!doctype html>
<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7 page-company" lang="en"> <![endif]-->
<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8 page-company" lang="en"> <![endif]-->
<!--[if IE 8]><html class="no-js lt-ie9 page-company" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js page-company" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

现在,就像我提到的,这个页面被加载到一个用一些js打开的新窗口中。如果我右键单击窗口并选择刷新,则页面权限本身,doctype不再被注释掉,并且页面在标准模式下正确呈现,而不是Quirks。如果我直接访问此 url,而不是通过新的弹出窗口,它也会正确呈现。

什么原因可能导致这种情况?这与用于强制打开新窗口的 js 有关吗?

提前感谢任何和所有的帮助,我将不胜感激!

文档类型被注释掉的事实表明页面正在被处理,就好像IE是IE7或更早版本一样。

请注意,具有<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">对您的页面没有影响,因为您在页面前面带有条件注释。这些具有将 IE 提交为特定版本的效果。

您可以尝试将 X-UA-Compatible, IE=edge 设置为真正的 HTTP 标头。这将在条件注释之前处理,因此应强制 IE 使用其最新模式。

在文件开头检查页面是否有无关字符时,我建议不要使用浏览器或文本编辑器,而是使用十六进制编辑器。例如,十六进制编辑器Neo(免费下载)将允许您直接从URL加载资源,因此您可以看到发送到浏览器的确切字节。