IE10, IE7 modunda işler. Standartlar modu nasıl zorlanır?


Yanıtlar:


244

Internet Explorer, çoğu web sayfasının IE'nin önceki sürümlerini hedef alacak şekilde yazıldığını varsayar ve en iyi uyumluluk modunu (bazen yanlış olarak) belirlemek için belge türüne, meta etiketlere ve HTML'ye bakar. HTML5 belge türünde bile IE, bir intranet sitesiyse web sitenizi uyumluluk moduna geçirmeye devam eder.

Web sitenizin her zaman en son standartlar modunu kullandığından emin olmak Display intranet sites in Compatiblyiçin kapalı olduğundan emin olabilirsiniz . Ancak bunu web sunucusundaki yerel her makinede yapmanız gerekir (talimatlar aşağıdadır).

Alternatif olarak ve daha da iyisi, bunu X-UA-Compatiblesunucudan kapatmak için başlığı kullanabilirsiniz . Meta etiketi kullanmanın işe yaramayacağını unutmamak önemlidir !

<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />

MSDN boyunca, bir ana bilgisayar başlığı veya bir meta etiket kullanmanın, intranet sitelerini bile geçersiz kılması gerektiğinden bahsedilir. İnternet explorer 8'deki uyumluluk modlarını anlama makalesi aşağıdakileri söylüyor.

Çok sayıda dahili iş web sitesi Internet Explorer 7 için optimize edilmiştir, bu nedenle bu varsayılan istisna bu uyumluluğu korur. ... Yine, belgeye uyumluluk modu ayarlamak için bir Meta etiketi veya http başlığı kullanılırsa, bu ayarları geçersiz kılar.

Ancak, pratikte bu işe yaramayacaktır, çalışan tek seçenek bir ana bilgisayar başlığı kullanmaktır. Makalenin yorumlar bölümü de bu konunun sayısız örneğini gösteriyor.

Bir Meta etiket kullanmanın, doğrudan <head>etiketin altında değilse veya ondan önce çok fazla veri varsa (4k) etiketi yok saymak gibi başka sorunları da vardır . Ayrıca, belgenin bazı IE sürümlerinde yeniden taranmasını tetikleyebilir ve bu da işlemeyi yavaşlatır. Bu sorunlar hakkında daha fazla bilgiyi En İyi Uygulama: HEAD'inizi sırayla alın adlı MSDN makalesinde okuyabilirsiniz .

X-UA-Uyumlu başlık ekleme

.NET ve IIS kullanıyorsanız, bunu öğesine ekleyebilir web.config, bunu programlı olarak da yapabilirsiniz:

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="X-UA-Compatible" value="IE=edge" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

IIS kullanmıyorsanız, herhangi bir dilde yapmak kolaydır. Örneğin, PHP'de bunu şu şekilde yapabilirsiniz:

header('X-UA-Compatible: IE=edge');

X-UA-CompatibleBaşlık HTML5 belge türünde olduğu sürece , bir site her zaman en son standartlar modunda çalışır.

Uyumluluk Görünümünü Kapatma Uyumluluk Görünümü'nü kapatmak
yine de yararlı olabilir. Bunu yapmak Display all intranet sites in compatibility viewiçin Uyumluluk Görünümü Ayarlarında işareti kaldırın .

Uyumluluk Görünümü Ayarları

AltMenüyü almak için tuşuna basarak bunu açabilirsiniz .

görüntü açıklamasını buraya girin

Düzenle Bu yanıt aynı zamanda IE9 ile de ilgilidir.


Cehaletimi bağışlayın, ama bu Ayarlar sayfasına nasıl ulaşılır? Internet explorer ayarlarını kontrol ettim, adres çubuğundaki uyumluluk görünümüne sağ tıkladım - hiçbir şey.
firedev

2
@ altAraç çubuğunu getirmek için küçük kullanın , araçların altında -> uyumluluk görünümü ayarları
Daniel Little

Oh teşekkürler, bu çözdü gibi görünüyor. Bunu neden yaptıkları merak uyandırıyor.
firedev

25
+1000;). SO, her OP'yi, herhangi bir [IE] etiketi ve sorusunda bir "uyumlu" kelimesi varken, hatta bu soruyu gerçekten göndermeden önce bu yanıtı görmeye zorlamalıdır.
Teemu

2
Özel başlıklar bölümünü projenin web.config dosyasına eklemeyi denedim. Ayarın, intranet siteleri için uyumluluk görünümünü kullanmak için IE ayarını geçersiz kılmadığı görülmektedir.
DomenicDatti

25

Bu benim için çalışıyor ..

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

11
Lavinski'nin yukarıda dediği gibi NB, "meta etiket intranet siteleri için hiçbir şey yapmaz."
Nathan

2
X-UA-CompatibleMeta etikete sahip, ancak yine de Sayfa Varsayılanı olarak IE10 Standartları belge modunu tetiklemeyen barındırılan bir web sitesi (intranet dışı site) için, meta etiketin komut dosyası etiketlerinin altında yer alması veya yalnızca <head>DOM ağacının tepesinden çok uzakta olan IE10 ağlar ve belge modunu IE8 Standartlarına ayarlar. Bu nedenle, IE=edgemeta etiketinizi etiketi yakın tutun <title>. Başlık şablonu dosyasında sabit kodlanmadığında Wordpress siteleri için her zaman basit bir düzeltme değildir. IE11'in meta etiketinin nerede olduğunu umursayıp önemsemediğinden emin değilim, ancak bunun birisine yardımcı olacağını umuyoruz.
purefusion

1
Gizli kopya ve benim gibi yapıştırıcılar için kapanış etiketi eksik. . <meta http-equiv = "X-UA-Uyumlu" content = "IE = edge"> </meta>
John Newman

Meta etiketi yalnızca XHTML doctype kullanıyorsanız kapatmanız gerekir
Andy Brudtkuhl

2
Ayrıca bu etiketin <head> içindeki ilk etiket olması gerekiyor
Chris Gunawardena

10

Aşağıdaki etiketi başa eklemeyi deneyin

<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />

5
Bunun IE=Edgeyerine bu olmalı
Daniel Little

1
Ancak,
IE'nin

7
Hayır, şartnameye uyarsanız bu bir risk değil, krom için bunu yapan insanları görmüyorsunuz.
Daniel Little

1
Bu etiketin <head> içindeki ilk etiket olması gerekiyor
Chris Gunawardena

1
Bu yanıttaki düzenleme, bunun neden iyi bir fikir olmadığını gösteriyor. Kabul edilen cevap en iyi çözümdür.
David Granado

2

Meta etiket intranet siteleri için hiçbir şey yapmıyor ve benim sorunum IE10 uyumluluk modunda IE10'un oluşturulmasıydı. Benim için sorunu çözen şey, @ Jeow'un yanıtını daha ileri götürmek ve bu değeri bir http başlığında web.configIIS altına aşağıdakileri ekleyerek kullanmaktı :

<system.webServer>
  <httpProtocol> 
    <customHeaders> 
      <clear />
      <!-- <add name="X-UA-Compatible" value="IE=edge" /> not good enough -->
      <add name="X-UA-Compatible" value="IE=11,IE=10,IE=9,IE=8" /> 
    </customHeaders> 
  </httpProtocol>
</system.webServer>

IE amaçları doğrultusunda, intranet siteleri dışarıya yönlendirilmemiş halka açık siteleri içerir - örneğin, ofisten çalışan bir Stackoverflow çalışanı muhtemelen stackoverflow.com'u uyumluluk modunda görür.


1

Aşağıdakileri yaptığımda benim için mükemmel çalıştı:

On http://msdn.microsoft.com/en-us/library/gg699338(v=vs.85).aspx

İlk kutuda sağladıkları kesin örneği kullandık (eksikleri </html>en altına eklediler), IE10'da açtılar ve standartlar zorlandı, sanırım html'de gerçek içeriğe ihtiyacınız olabilir, bunun standartları zorlaması için emin değilim.

Benim önerim boş kodunuzu gerçek içerikle (basit bir şey) değiştirmek ve ne işe yaradığını görmek olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.