我遇到了一个问题,即所有版本的 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();
}
现在,经过大量研究,我已经尝试了所有方法并阅读了此处提出的各种其他问题,记录了相同的问题,例如this和this。
我已经在我的文本编辑器中检查了我的文件,并在 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有关吗?
在此先感谢您提供的所有帮助,我将不胜感激!