web-dev-qa-db-ja.com

IE9が互換モードでイントラネットサイトをレンダリングしないようにする方法

IE9には、イントラネットサイトを互換モードでレンダリングするという奇妙な問題があります。

これを防ぐ方法を誰かが知っていますか?

注:シングルユーザーマシンでそれを防ぐ方法を探しているのではなく、互換モードでサイトがレンダリングされないようにするプログラム的な方法を探しています。

26
novicePrgrmr

徹底的な検索の結果、IE9でイントラネットサイトが互換モードでレンダリングされないようにする方法を見つけました このブログ

テスモンドのブログから

IE9には、互換モードが有効なままになる可能性のある2つの癖があります。 X-UA-Compatibleメタ要素は、headセクションの最初のメタ要素である必要があります。 X-UA-Compatibleメタ要素の前にcondtional IEステートメントを含めることはできません。これは、Paul IrishのすばらしいHTML5ボイラープレートを使用する場合、デフォルトのIE9設定のイントラネットでWebサイトに互換性が表示されることを意味します。モード。ボイラープレートの開始を次のように変更する必要があります。-

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

に:

<!doctype html>
<html class="no-js" lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<meta charset="utf-8">
31
novicePrgrmr

@novicePrgrmrの回答に続き、IE7モードでIE9がイントラネットをロードするための回避策があるようです。これでも互換モードがトリガーされますが、 Paul IrishのHTML5ボイラープレートマークアップ にわずかな変更が加えられていることがわかりました。少なくともIE9はIE9標準でイントラネットをレンダリングできます。

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

    <p>content</p>

</body>
</html>

これはまだ有効なHTMLであり、IE using .lt-ie のではなく html.lt-ie

4
Timmah

これは、単純なメタタグを追加することで実行できます

<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">

これを実現する別の方法は、このコードを.htaccessファイルに追加することです。

# ----------------------------------------------------------------------
# Better website experience for IE users
# ----------------------------------------------------------------------

# Force the latest IE version, in various cases when it may fall back to IE7 mode
#  github.com/Rails/rails/commit/123eb25#commitcomment-118920
# Use ChromeFrame if it's installed for a better experience for the poor IE folk

<IfModule mod_headers.c>
  Header set X-UA-Compatible "IE=Edge,chrome=1"
  # mod_headers can't match by content-type, but we don't want to send this header on *everything*...
  <FilesMatch "\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp4|m4v|webm|svg|svgz|eot|ttf|otf|woff|ico|webp|appcache|manifest|htc|crx|oex|xpi|safariextz|vcf)$" >
    Header unset X-UA-Compatible
  </FilesMatch>
</IfModule>
3
Ruud

ホームページにコードを追加できる場合は、次のように追加するだけです。

<meta http-equiv="X-UA-Compatible" content="IE=Edge">

あなたのウェブサイトのヘッダーに。

<meta http-equiv="X-UA-Compatible" content="IE=9">を使用してIE9-Rendererを強制することもできます)これにより、IE9は標準モードでレンダリングされます。

別の方法は、別のDoctypeを使用することです。これをコードの先頭に配置します。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
1
jAC