web-dev-qa-db-ja.com

Win7 IEブラウザがIE7モードで実行されているのはなぜですか?

私たちのサイトでは、現在約Windows 7を実行しているIE7ユーザーの50%。ただし、Win7はIE8とともにリリースされ、何かが正しくないことを意味します。これに基づいて、最新のIEブラウザーがサイトでIE7互換モードに入ると仮定しました。そのため、IE7のサポートを無効にするために、サイトに「X-UA-Compatible = Edge」メタタグを配置しました。ただし、1週間後、IE7(およびIE8)ユーザーの割合は、今年の初め以来初めて上昇しました。 X-UA-Compatibleのドキュメントを見ると、サイトをoldモードにするために使用されるのはmeantです。

  • IEが互換モードにならないことを確認する他の方法はありますか?
  • 他に探す必要があるものはありますか?

そして、はい、私たちのサイトには非常に多くのユーザーがいるので、IE7が一意の訪問者の2%未満になるまでIE7を殺すことはできません。

編集:<!doctype html>を使用します

EDIT2:私たちの環境でも互換モードを再現することができませんでした

2
Skurpi

それでは、計算が正しくないことを確認しました。私たちのプロバイダーは、「訪問」数に基づいてレポートを提供していました。訪問は、ユーザーがウェブサイトで費やす時間に基づいて計算されます。ただし、IE7ユーザーはめったにいないかもしれませんが、Chromeユーザーと比較してWebサイトでより多くの時間を費やす可能性があります。つまり、私たちが行った割合は、ブラウザを使用しているユーザーの割合ではなく、「ユーザーが使用しているブラウザに基づいて、ユーザーがサイトに費やす時間」のようなものでした。

IE7のサポートをやめることにしました。計算は簡単でした。IE7用にサイトを調整するためにチームが費やす時間は、同じユーザーから得られる収益の量を考慮していません。一度にコードを調べてIE7のすべての修正を削除することはありません。代わりに、私たちは日々の仕事の一部として時間をかけてそれを行います。これは、サイトがマイナーなグリッチのみでIE7で長時間動作することを意味します。しかし、うまくいけば、IE7でサイトが耐えられなくなるまでに、ユーザーの最後の数パーセントがアップグレードされるでしょう。

問題の実際の解決策:

互換モードのユーザー数を減らすために、X-UA-Compatible=Edgeフラグを使用してみました。フラグは、HTMLタグとリクエストヘッダーの両方を使用して設定できます。両方試してみましたが、それが数字に大きな影響を与えることはありませんでした。サイトが古いブラウザ互換モードで終了した場合、ユーザーが通常のブラウジングに積極的に進むまでサイトはそのままです。これを回避するために、ユーザーが同じジャムにいるときにGoogle+と同じことをすることにしました:ページの上部にバーを表示するたびにページがロードされます。このバーには、Webサイトの互換モードを終了する方法に関する情報へのリンクが含まれており、終了するまでバーは消えません。

ユーザーが互換モードでサーフィンしているかどうかを確認するには:

var ua = navigator.userAgent.match(/MSIE [0-9]*/);
var version;

if (ua && document.documentMode !== undefined) {
  version = parseInt(ua[0].replace(/[^0-9]/g, ""));
  if (version !== document.documentMode) {
    alert("Compat mode!");
  }
}

(他のstackoverflowの質問に基づいた解決策。とりわけ: this および this

2
Skurpi

IEが互換モードにならないことを確認する他の方法はありますか?はい。ブラウザを標準モードに移行させるDoctypeを使用してください。

<!DOCTYPE html>

トリックを行う必要があります

0
dave