IE のすべてのバージョンがサイトの 1 つのページを 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 開発者ツールで doctype を表示すると、コメント アウトされていることがわかります。これは、私がサイト全体で使用している (HTML5 ボイラープレートからの) doctype 構造と同じです。他のページにはこの問題はありません。doctype 宣言とメタ項目は次のとおりです。
<!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 ではなく Standards モードで正しくレンダリングされます。新しいポップアップ ウィンドウからではなく、この URL に直接アクセスすると、正しくレンダリングされます。
何が原因でしょうか? これは、新しいウィンドウを強制的に開くために使用されるjsと関係がありますか?
事前にすべての助けに感謝します。本当に感謝しています!