1

我遇到了一个问题,即所有版本的 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();
}

现在,经过大量研究,我已经尝试了所有方法并阅读了此处提出的各种其他问题,记录了相同的问题,例如thisthis

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

<!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有关吗?

在此先感谢您提供的所有帮助,我将不胜感激!

4

1 回答 1

1

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

请注意,<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">拥有不会对您的页面产生任何影响,因为您在它之前添加了条件注释。这些具有将 IE 提交为特定版本的效果。

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

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

于 2013-01-24T08:26:39.520 回答