26

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

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

注:私は単一のユーザーのマシンでそれを防ぐ方法を探していませんが、互換モードでのサイトのレンダリングをプログラムで防止する方法があります。

答えて

31

徹底的に検索した後、私は正常に互換モードでレンダリングからイントラネットサイトを予防する方法を見つけましたthis blog上のIE9:Tesmondのブログから

互換モードがに残ることがありますIE9で2つの癖があります。効果。 X-UA準拠のmeta要素は、headセクションの最初のmeta要素でなければなりません。 X-UA-Compatibleメタ要素の前にcondtional IE文を使用することはできません。 これは、Paul Irishの素晴らしいHTML5 Boilerplateを使用して、イントラネットでデフォルトのIE9設定を使用すると、ウェブサイトが互換モードで表示されることを意味します。あなたは以下から定型の開始を変更する必要があります: -

<!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"> 
+4

は、ありますか?私はそれが「バグ」のペアのように多くの「癖」であるかどうかはわかりません。 :)記事に私を指摘してくれてありがとう。 IE8 :( – jinglesthula

+0

... –

+0

あなたは互換モードと一緒に暮らすことができる場合、私は、以下IE7のレンダリング問題の回避策を発見したために動作しません – Timmah

3

これは、これを達成するもう一つの方法は、あなたの.htaccessファイルにこのコードを追加することです

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

シンプルなメタタグを追加することによって行うことができます!

# ---------------------------------------------------------------------- 
# 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> 
+0

メタタグを追加しようとしました。しかし、問題を解決していないし、htaccessファイルにアクセスできません。メタタグがイントラネットサイトで動作することは確かですか?私は定期的なサイトで動作するかどうかは知っていますが、イントラネットについてはわかりません。 – novicePrgrmr

+0

一時的なインターネットファイルをすべて消去したり、他のPCでテストしたりしてみましたか? – Ruud

+0

はい、実際に別のPCでそれをテストしました。もう少し調べてみましたが、実際IE9のイントラネット互換モードをオーバーライドすることはできません。 – novicePrgrmr

1

あなたがホームページにコードを追加することができた場合は、単にこの追加することができます:あなたのウェブサイトのヘッダに

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

を。

<meta http-equiv="X-UA-Compatible" content="IE=9">を強制的にIE9レンダラーに使用することもできます) IE9を標準モードで強制的にレンダリングします。 あなたのコードの先頭にこれを置く:

もう一つの方法は、別のDOCTYPEを使用することです

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

IE-edgeメソッドとIE-9メソッドの両方を試しました。どちらもうまくいかなかった。メタタグを '' ''に配置する必要がありますか? – novicePrgrmr

+0

はい、内部(下)には「」タグがあります。 あなたのDOCTYPEを削除し、それを置き換える、作業いない場合:<!DOCTYPE HTML> '' – jAC

+0

最初のものは私のために働いた、徹底的に壊れてどのように感謝 – ianbroad

4

@ novicePrgrmrの答えから続き、IE7モードで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固有のCSSを既存の、まだ、うまく動作するはずです:これはまだ互換モードをトリガしている間、私はPaul Irish's HTML5 boilerplate markupに若干の修正が少なくともIE9はIE9規格でイントラネットをレンダリングすることができましたhtml.lt-ieではなく.lt-ieを使用してIEをターゲティングしています。

+0

はい、私はそれらの前に私のfaviconのリンクタグを持っていました。この作品は、秘密は、あなたの頭のタグの外側に条件文を持っていることです。 – uknowit2

関連する問題