<Meta http-equiv = “X-UA-Uyumlu” içerik = “IE = kenar”> ne işe yarar?


1437

Bir web sayfası ile başlarsa ne fark eder?

<!DOCTYPE html> 
<html> 
  <head> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 

ve Sayfa şununla başlarsa:

<!DOCTYPE html> 
<html> 
  <head> 
     <!-- without X-UA-Compatible meta -->

Hiçbir fark yoksa, sadece tüm X-UA-Compatiblemeta sürümlerinde en standart modda görüntülenmesini istediğim için meta üstbilgiyi göz ardı edebilirim .

Yanıtlar:


1703

Ekim 2015 Güncellemesi

Bu cevap birkaç yıl önce gönderildi ve şimdi soru gerçekten etiketini sitenizde kullanmayı düşünmelisiniz X-UA-Compatible? Microsoft'un tarayıcılarında yaptığı değişikliklerle (aşağıdakiler hakkında daha fazla bilgi).

Hangi Microsoft tarayıcılarını desteklediğinize bağlı olarak X-UA-Compatibleetiketi kullanmaya devam etmeniz gerekmeyebilir . IE9 veya IE8'i desteklemeniz gerekiyorsa, etiketi kullanmanızı tavsiye ederim. Yalnızca en son tarayıcıları (IE11 ve / veya Edge) destekliyorsanız, bu etiketi tamamen bırakmayı düşünürüm. Twitter Bootstrap kullanıyorsanız ve doğrulama uyarılarını kaldırmanız gerekiyorsa, bu etiketin belirtilen sırada görünmesi gerekir. Aşağıdaki ek bilgiler:


X-UA-CompatibleMeta tag web yazarlar sayfası olarak oluşturulması gereken şey Internet Explorer'ın sürümü seçmenize olanak verir. IE11 bu modlarda değişiklik yaptı; aşağıdaki IE11 notuna bakın. IE11'in yerini alan tarayıcı Microsoft Edge , yalnızca X-UA-Compatiblebelirli durumlarda meta etiketi onurlandırıyor . Aşağıdaki Microsoft Edge notuna bakın.

Microsoft'a göre X-UA-Compatibleetiketi kullanırken, belgenizde olabildiğince yüksek olması gerekir head:

X-UA-Uyumlu META etiketini kullanıyorsanız, etiketi sayfanın HEAD'inin üstüne mümkün olduğunca yakın yerleştirmek istersiniz. Internet Explorer, biçimlendirmeyi en son sürümü kullanarak yorumlamaya başlar. Internet Explorer X-UA-Uyumlu META etiketiyle karşılaştığında, belirtilen sürümün motoru kullanılarak baştan başlar. Bu bir performans isabidir çünkü tarayıcının içeriği analiz etmeyi durdurması ve yeniden başlatması gerekir.

Seçenekleriniz şunlardır:

  • "IE = kenar"
  • "IE 11 ="
  • "IE = EmulateIE11"
  • "IE = 10"
  • "IE = EmulateIE10"
  • "IE 9 ="
  • "IE = EmulateIE9
  • "IE 8 ="
  • "IE = EmulateIE8"
  • "IE 7 ="
  • "IE = Emulateıe7"
  • "IE 5 ="

Her birinin ne anlama geldiğini anlamaya çalışmak için, Microsoft tarafından sağlanan tanımlar şunlardır:

Internet Explorer, farklı özellikleri etkinleştiren ve içeriğin görüntülenme şeklini etkileyebilecek bir dizi belge uyumluluk modunu destekler:

  • Kenar modu, Internet Explorer'a içeriği en yüksek modda görüntülemesini söyler. Internet Explorer 9 ile bu, IE9 moduna eşdeğerdir. Internet Explorer'ın gelecekteki bir sürümü daha yüksek bir uyumluluk modunu destekliyorsa, kenar moduna ayarlanmış sayfalar bu sürüm tarafından desteklenen en yüksek modda görünür. Internet Explorer 9 ile görüntülendiğinde aynı sayfalar IE9 modunda görünmeye devam eder. Internet Explorer, farklı özellikleri etkinleştiren ve içeriğin görüntülenme şeklini etkileyebilecek bir dizi belge uyumluluk modunu destekler:

  • IE11 modu, HTML5, CSS3 ve diğerleri de dahil olmak üzere yerleşik ve yükselen endüstri standartları için mevcut en yüksek desteği sağlar.

  • IE10 modu, HTML5, CSS3 ve diğerleri de dahil olmak üzere yerleşik ve yükselen endüstri standartları için mevcut en yüksek desteği sağlar.

  • IE9 modu, HTML5 (Çalışma Taslağı), W3C Basamaklı Stil Sayfaları Seviye 3 Şartnamesi (Çalışma Taslağı), Ölçeklenebilir Vektör Grafikleri (SVG) 1.0 Şartnamesi ve diğerleri dahil olmak üzere yerleşik ve gelişmekte olan endüstri standartları için en yüksek desteği sağlar. [Editör Not: IE 9 , CSS3 animasyonlarını desteklemez].

  • IE8 modu, W3C Basamaklı Stil Sayfaları Düzey 2.1 Spesifikasyonu ve W3C Seçiciler API'sı; ayrıca W3C Basamaklı Stil Sayfaları Seviye 3 Spesifikasyonu (Çalışma Taslağı) ve diğer ortaya çıkan standartlar için sınırlı destek sağlar.

  • IE7 modu içeriği, sayfada bir yönerge içerip içermediğine bakmaksızın Internet Explorer 7 tarafından standart modda görüntüleniyormuş gibi işler.

  • IE9 öykün modu, Internet Explorer'a içeriği nasıl işleyeceğini belirlemek için yönergeyi kullanmasını bildirir. Standartlar modu yönergeleri IE9 modunda ve tuhaflıklar modu yönergeleri IE5 modunda görüntülenir. IE9 modundan farklı olarak, IE9 modunu taklit et yönergeye uyar.

  • IE8 modunu taklit et, Internet Explorer'a içeriği nasıl işleyeceğini belirlemek için yönergeyi kullanmasını söyler. Standartlar modu direktifleri IE8 modunda ve tuhaflık modu direktifleri IE5 modunda görüntülenir. IE8 modundan farklı olarak, IE8 modunu taklit et yönergeye uyar.

  • IE7 modunu taklit et, Internet Explorer'a içeriği nasıl işleyeceğini belirlemek için yönergeyi kullanmasını söyler. Standartlar modu yönergeleri Internet Explorer 7 standartlar modunda ve tuhaflıklar modu yönergeleri IE5 modunda görüntülenir. IE7 modundan farklı olarak, IE7 modunu taklit et yönergeye uyar. Birçok web sitesi için bu tercih edilen uyumluluk modudur.

  • IE5 modu, içeriği Microsoft Internet Explorer 5'te içeriğin görüntülenme biçimine çok benzeyen Internet Explorer 7 tarafından ilginç modda görüntüleniyormuş gibi işler.

IE10 NOT: IE10'dan itibaren tuhaflıklar modu tarayıcının önceki sürümlerinde olduğundan farklı davranır. IE9 ve önceki sürümlerinde, tuhaflıklar modu web sayfasını IE5.5 tarafından desteklenen özelliklerle kısıtladı. IE10'da, gariplik modu HTML5 belirtiminde belirtilen farklılıklara uygundur.

Şahsen, her zaman http-equiv="X-UA-Compatible" content="IE=edge"meta etiketi seçiyorum , çünkü eski sürümlerde çok fazla hata var ve IE'nin "Uyumluluk moduna" girmeye ve sitemi IE7'ye IE8 veya 9 olarak göstermeye karar vermesini istemiyorum. IE.

IE11

Gönderen Microsoft :

IE11 ile başlayarak, kenar modu tercih edilen belge modudur; tarayıcı için mevcut olan modern standartlar için en yüksek desteği temsil eder.

Kenar modunu etkinleştirmek için HTML5 belge türü bildirimini kullanın:

<!doctype html>

Edge modu Internet Explorer 8'de tanıtıldı ve sonraki her sürümde kullanılabilir. Kenar modu tarafından desteklenen özelliklerin, içeriği oluşturan tarayıcının belirli sürümü tarafından desteklenen özelliklerle sınırlı olduğunu unutmayın.

IE11 ile başlayarak, belge modları kullanımdan kaldırılmıştır ve geçici olarak kullanılması dışında artık kullanılmamalıdır. Eski özelliklere ve belge modlarına dayanan siteleri modern standartları yansıtacak şekilde güncellediğinizden emin olun.

Sitenizin modern standartları ve özellikleri desteklemek için yeniden çalışırken işlev görmesi için belirli bir belge modunu hedeflemeniz gerekiyorsa, gelecekteki sürümlerde bulunmayabilecek bir geçiş özelliği kullandığınızı unutmayın.

Şu anda x-ua uyumlu üstbilgiyi eski bir belge modunu hedeflemek için kullanıyorsanız, sitenizin IE11 ile kullanılabilecek en iyi deneyimi yansıtmaması mümkündür.

Microsoft Edge (Windows 10 ile birlikte gelen Internet Explorer'ın değiştirilmesi)

X-UA-CompatibleIE'nin "Edge" sürümü için meta etiketi hakkında bilgi . Microsoft'tan :

“Yaşayan” Edge belge modunun tanıtımı

Ağustos 2013'te açıkladığımız gibi, IE11'den itibaren belge modlarını kullanımdan kaldırıyoruz. En son platform güncellemelerimizle, eski belge modlarına duyulan ihtiyaç öncelikle Kurumsal eski web uygulamalarıyla sınırlıdır. Yeni mimari değişikliklerle, bu eski belge modları, "canlı" Kenar modundaki değişikliklerden ayrılacak ve bu da bu modlara bağlı olan müşteriler için çok daha yüksek bir uyumluluk düzeyini garanti etmeye yardımcı olacak ve Edge'deki iyileştirmelere daha hızlı hareket etmemize yardımcı olacak . IE yine de intranet siteleri, Uyumluluk Görünümü listesindeki siteler ve yalnızca Enterprise Modu ile kullanıldığında sunulan belge modlarını dikkate alır.

Genel İnternet siteleri yeni Edge modu platformuyla oluşturulacak (X-UA-Uyumlu yok sayılıyor). Hedefimiz Edge'in buradan "yaşayan" belge modu olması ve bundan böyle başka belge modlarının kullanılmayacağıdır.

Microsoft Edge'deki değişikliklerin çoğu durumda artık belge modlarını desteklememesi nedeniyle, Microsoft'un sitenizi, Edge ile uyumlu olmayan bir kodu olup olmadığını kontrol etmek ve görmek için taramak için bir aracı vardır.

Chrome = IE için 1 Bilgi

Orada da chrome=1kullandığınız ya da benzeri yukarıdaki seçeneklerden biri ile birlikte kullanabileceğiniz: <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">. chrome=1Google'ın şu şekilde tanımlanan Chrome Frame'i içindir:

Google Chrome Frame açık kaynaklı bir tarayıcı eklentisidir. Eklentiyi yükleyen kullanıcılar, tarayıcıda sayfa açtıklarında Google Chrome'un açık web teknolojilerine ve hızlı JavaScript motoruna erişebilir.

Google Chrome Frame, Internet Explorer'daki tarama deneyiminizi sorunsuz bir şekilde geliştirir. Google Chrome'un etkinleştirme teknolojisini kullanarak Google Chrome Frame özellikli siteleri görüntüler ve her zamanki tarayıcı kullanımınızı hiçbir şekilde kesintiye uğratmadan Google Chrome'un performans ve güvenlik özelliklerine en son HTML5 özelliklerine erişmenizi sağlar.

Google Chrome Frame yüklendiğinde, bunu düşünmenize gerek kalmadan web daha da iyi hale gelir.

Ancak bu eklentinin çalışması chrome=1için X-UA-Compatiblemeta etikette kullanmanız gerekir .

Chrome Frame hakkında daha fazla bilgiyi burada bulabilirsiniz .

Not: Google Chrome Frame yalnızca IE6 ile IE9 arasında çalışır ve 25 Şubat 2014'te kullanımdan kaldırılmıştır. Daha fazla bilgi burada bulunabilir . Bağlantı için @mck'e teşekkürler.

Doğrulama:

HTML5 :

Sayfa, yalnızca W3 Doğrulayıcı kullanılarak doğrulanır <meta http-equiv="X-UA-Compatible" content="IE=Edge">. Diğer değerler için hatayı atar: A meta element with an http-equiv attribute whose value is X-UA-Compatible must have a content attribute with the value IE=edge.Başka bir deyişle, varsa IE=edge,chrome=1doğrulamaz. Modern tarayıcılar bu kod satırını görmezden geldiği için bu hatayı tamamen görmezden geliyorum.

Tamamen geçerli bir kodunuz olması gerekiyorsa, HTTP üstbilgisini ayarlayarak bunu sunucu düzeyinde yapmayı düşünün. Not olarak, Microsoft, HTTP üstbilgisinin nasıl ayarlanacağı hakkında daha fazla bilgi için olibre'nin cevabına veya bitinn'in cevabınaIf both of these instructions are sent (meta and HTTP), the developer's preference (meta element) takes precedence over the web server setting (HTTP header). bakın .

XHTML

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />Etiket gerektiği gibi kapatıldığı sürece (örn. />Vs >) doğrulama ile ilgili bir sorun yoktur .

Twitter Önyükleme

Bu etiket şiddetle en az 2014 yılından beri Bootstrap ekibi tarafından tavsiye edilmiştir ve Bootlint , linter ekibi atmak devam twbs tarafından kaleme uyarı etiketi ihmal edildiğinde. Linter, uyarılar ve hatalar arasında ayrım yapar ve bu nedenle, bu etiketi atlamanın şiddeti küçük sayılabilir.


Daha fazla bilgi için X-UA-Compatiblebkz. Microsoft'un Web Sitesi Belge Uyumluluğunu Tanımlama .

IE'nin neleri desteklediği hakkında daha fazla bilgi için bkz. Caniuse.com .

Twitter Bootstrap gereksinimleri hakkında daha fazla bilgi için bootlint projesi wiki sayfasına bakın .


40
Başlıklarda "X-UA-Uyumlu" yoksa, ne olurdu?
Morgan Cheng

45
Temelde ne olduğunu X-UA-Uyumlu olduğunda ne IE değilse ayarlanmış değeri (IE = kenar vb) açısından nasıl davranacağını söyler IE orada en iyi nasıl gösterilmesi gerektiğini siteyi gösterecektir . Bu uyumluluk modu olabilir veya IE'nin en son sürümü olabilir. Microsoft / IE ne düşünüyorsa onu en iyisidir. Mantıklı olmak?
L84

2
@TravisJ - Anladığım kadarıyla mevcut en yüksek mod IE 8'in IE8 modlarına kadar destekleyebileceği, IE9'un IE9 modlarını destekleyebileceği anlamına geliyor. Microsoft tarafından sağlanan her mod için bazı tanımlar ekledim.
L84

10
@AdrienBe - Tamamen katılıyorum! Şimdiye kadar IE 10 benim için en iyisi oldu ama başka bir sürümü hor görüyorum. Bir keresinde, 200-300 satır HTML ve yaklaşık 20 dakikalık kodlama ile bazı efektler içeren bir sayfa ayarları yaptım. IE işe almak için başka bir 1000 satır kod (çoğunlukla 3. parti javascript) ve 2-3 saat çalışma eklemek zorunda kaldım! IE =>
L84

9
Google Chrome Frame, Ocak 2014'te kullanımdan kaldırılacak: blog.chromium.org/2013/06/retiring-chrome-frame.html
mck

339

Kullanım content="IE=edge,chrome=1"   atla diğer X-UA-Compatiblemodlar

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
                                   -------------------------- 
  • Uyumluluk simgesi yok
    IE9 Adres çubuğu Uyumluluk Görünümü düğmesini göstermiyor
    ve sayfa ayrıca yer dışı menüler, resimler ve metin kutularının karıştığını da göstermiyor.

  • Özellikler
    Bu meta etiket javascript::JSON.parse()IE8'de etkinleştirmek için gereklidir
    ( <!DOCTYPE html>mevcut olsa bile )


  • Modern HTML / CSS / JavaScript'in Doğruluk Oluşturma / Yürütme daha geçerli (daha güzel).

  • Performans Trident render motoru daha hızlı çalıştırmak gerekir kenar modu.


kullanım

HTML'nizde

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

Veya web sunucunuzun yapılandırmasında daha iyi:
(ayrıca RiaD'ın cevabına bakın )

  • Pixeline tarafından önerilen Apache

    <IfModule mod_setenvif.c>
      <IfModule mod_headers.c>
        BrowserMatch MSIE ie
        Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
      </IfModule>
    </IfModule>
    <IfModule mod_headers.c>
      Header append Vary User-Agent
    </IfModule>
    
  • Stef Pause tarafından önerilen Nginx

    server {
      #...
      add_header X-UA-Compatible "IE=Edge,chrome=1";
    }
    
  • Vernik tarafından önerilen vekil Lucas Riutzel

    sub vcl_deliver {
      if( resp.http.Content-Type ~ "text/html" ) {
        set resp.http.X-UA-Compatible = "IE=edge,chrome=1";
      }
    }
    
  • IIS (v7'den beri)

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

Microsoft, IE11'den beri Edge modunu önerir

Lynda tarafından fark edildiği gibi (yorumlara bakın) IE11'deki Uyumluluk değişiklikleri Kenar modunu önerir :

IE11 ile başlayarak, kenar modu tercih edilen belge modudur; tarayıcı için mevcut olan modern standartlar için en yüksek desteği temsil eder.

Ancak Microsoft'un konumu net değildi. Başka bir MSDN sayfası Kenar modunu önermedi :

Edge modu, Internet Explorer sürümüne bakılmaksızın tüm sayfaları standart modda açılmaya zorladığından, bunu Internet Explorer ile görüntülenen tüm sayfalar için kullanmaya cazip gelebilirsiniz. X-UA-CompatibleÜstbilgi yalnızca Windows Internet Explorer 8'den başlayarak desteklendiğinden bunu yapmayın .

Bunun yerine Microsoft <!DOCTYPE html>şunları kullanmanızı önermiştir :

Internet Explorer'ın tüm desteklenen sürümlerinin sayfalarınızı standartlar modunda açmasını istiyorsanız, HTML5 belge türü bildirimini kullanın [...]

Ricardo'nun (aşağıdaki yorumlarda) açıkladığı gibi , herhangi bir DOCTYPE (HTML4, XHTML1 ...) yalnızca HTML5'in DOCTYPE'ını değil, Standartlar Modunu tetiklemek için kullanılabilir. Önemli olan her zaman sayfada bir DOCTYPE bulundurmaktır.

Clara Onager , Eski belge modlarını belirtmenin eski bir sürümünde bile fark etti :

Kenar modu yalnızca test amaçlıdır; üretim ortamında kullanmayın.

Usman Y'nin Clara Onager'ın hakkında konuştuğunu düşünmesi çok kafa karıştırıcı :

[...] örneği yalnızca açıklama amacıyla verilmiştir; üretim ortamında kullanmayın.

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

Peki ... Bu cevabın geri kalanında, kullanımın content="IE=edge,chrome=1"üretimde neden iyi bir uygulama olduğunu daha fazla açıklıyorum .


Tarih

Uzun yıllar (2000 ila 2008), IE pazar payı% 80'den fazla olmuştur . Ve IE v6 , fiili bir standart olarak kabul edildi ( sadece IE6 için 2003 , 2004, 2005 ve 2006'da % 80 ila% 97 pazar payı, tüm IE sürümleriyle daha fazla pazar payı).

IE6 Web standartlarına uymadığından , geliştiriciler web sitelerini IE6 kullanarak test etmek zorunda kaldılar. Web geliştiricileri MS ürünleri satın almak zorunda oldukları için Microsoft (MS) için bu durum harikaydı (örn. IE, Windows satın almadan kullanılamaz) ve uyumsuz kalmak için daha fazla kâr elde ediyordu (yani Microsoft , diğerlerini hariç tutmak için standart olmak istedi) şirketler).

Bu nedenle birçok site yalnızca IE6 uyumludur ve IE web standardıyla uyumlu olmadığından, tüm bu web siteleri standartlara uygun tarayıcılarda iyi oluşturulmamıştır. Daha da kötüsü, birçok site sadece IE gerektiriyordu .

Ancak, şu anda Mozilla, tüm web standartlarına (IE6 tarafından yapılan sayfaları işlemek için diğer tarayıcılar uygulandı) mümkün olduğunca Firefox geliştirmeye başladı. Giderek daha fazla web geliştiricisi yeni web standartları özelliklerini kullanmak istedikçe, gittikçe daha fazla web sitesi IE'den daha fazla Firefox tarafından destekleniyordu.

IE pazar paylaşımı azalırken, MS standartların uyumsuz kalmasının iyi bir fikir olmadığını fark etti. Bu nedenle MS, giderek daha fazla web standardına saygı duyan yeni IE sürümünü (IE8 / IE9 / IE10) yayınlamaya başladı.


Web ile uyumsuz sorun

Ancak sorun IE6 için tasarlanmış tüm web siteleri: Microsoft, bu eski IE6 tasarlanmış web siteleriyle uyumsuz yeni IE sürümleri yayınlayamadı. Bir web sitesi tasarlanan IE sürümünü çıkarmak yerine MS, geliştiricilerin X-UA-Compatiblesayfalarına fazladan veri ( ) eklemelerini istedi .

IE6 hala 2016'da kullanılıyor

Günümüzde IE6 hala kullanılmaktadır (2016'da% 0.7) (Ocak 2014'te% 4.5) ve bazı internet siteleri hala sadece IE6 uyumludur. Bazı intranet web siteleri / uygulamaları IE6 kullanılarak test edilir. Bazı intranet web siteleri yalnızca IE6'da% 100 işlevseldir. Bu şirketler / departmanlar taşıma maliyetini ertelemeyi tercih ediyor: diğer öncelikler, artık web sitesinin / uygulamanın nasıl uygulandığını bilmiyor, eski web sitesinin / uygulamanın sahibi iflas etti ...

Çin, 2013 yılında IE6 kullanımının% 50'sini temsil etmektedir, ancak Çin Linux dağıtımı yayınlandıkça önümüzdeki yıllarda değişebilir .

Web becerilerinizden emin olun

Web standardına saygı duymaya çalışırsanız, her zaman kullanabilirsiniz http-equiv="X-UA-Compatible" content="IE=edge,chrome=1". Eski tarayıcılarla uyumluluğu korumak için en son web özelliklerini kullanmaktan kaçının: Desteklemek istediğiniz en eski tarayıcı tarafından desteklenen altkümeyi kullanın. Veya daha ileri gitmek isterseniz, Zarif bozulma , Aşamalı geliştirme ve Göze batmayan JavaScript gibi kavramları benimseyebilirsiniz . ( Bir web geliştiricisinin neleri göz önünde bulundurması gerekir? ' İ okumaktan da memnun olabilirsiniz .)

En iyi IE sürümü oluşturma umurumda değil: tarayıcılar web standartlarına uygun olması gerektiği için bu sizin işiniz değil. Siteniz standart uyumluysa ve orta düzeyde en yeni özellikleri kullanıyorsa, tarayıcıların web sitenizle uyumlu olması gerekir .

Ayrıca, IE6 ( artık IE6 , MS kampanyası ) öldürmek için birçok kampanya olduğundan , günümüzde IE testi ile zaman kaybetmekten kaçınabilirsiniz!

Kişisel IE6 deneyimi

2009-2012'de resmi tek tarayıcıya izin verilen IE6 kullanan bir şirkette çalıştım . Sadece IE6 için bir intranet web sitesi uygulamak zorunda kaldım. Web standardına uymaya karar verdim ama IE6 özellikli alt kümeyi (HTML / CSS / JS) kullanarak.

Zordu, ancak şirket IE8'e geçtiğinde , web standart uyumluluğunu kontrol etmek için Firefox ve kundakçı kullandığım için web sitesi hala iyi işlenmişti ;)


2
'Kenar modu yalnızca test amaçlıdır; üretim ortamında kullanmayın. ' Bkz. Msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx
Carl Onager

5
Lütfen @ClaraOnager cevabımdaki neyin yanlış olduğunu açıklamak için biraz zaman ayırın (sizin bakış açınızdan). MS, Edge modunun üretim ortamında kullanılmasını önermese bile, üretim ortamında kullanmak için iyi nedenler vardır. En iyi uygulamalarımızı teknik olarak açıklığa kavuşturmak önemlidir. Bilgi ve tecrübelerimi paylaşmayı seviyorum. Umarım sen de. Birlikte geliştirebiliriz;) Şerefe
olibre 23:13

2
Merhaba @Ricardo, sana katılıyorum. Microsoft, diyor "Internet Explorer'ın tüm desteklenen sürümleri, standartlar modda sayfaları açmak HTML5 [...] kullanmak istiyorsanız" bölümünde anlama eski belge modları (bkz İpucu ). Belki açıklamam belirsiz ... Belki bir şeyleri yanlış anladım ... Metnimi değiştirdim ... Değişikliklerim hakkında ne düşünüyorsun? senin için uygun mu? Cevabım içinde neyi değiştirmek / geliştirmek için tavsiyeleriniz var? Geri bildiriminiz için teşekkürler. Şerefe ;-)
olibre

5
@ClaraOnager ... ilk yanıtınızda referans sayfasında yanlış bir şekilde işaret ediyorsunuz .. MS, üretim ortamında aşağıdakiler için kullanılmadığını söylüyor: <meta http-equiv = "X-UA-Uyumlu" content = "IE = 7, 9,10 "> diğer Edge şeylerini değil.
Usman Younas

3
Üretim ortamında kullanılan Edge Mode hakkında. Microsoft'tan:Starting with IE11, edge mode is the preferred document mode; it represents the highest support for modern standards available to the browser.
L84

58

Aradaki fark, yalnızca 'i belirtirseniz DOCTYPEIE'nin Uyumluluk Görünümü Ayarlarının öncelikli olmasıdır. Varsayılan olarak, bu ayarlar tüm intranet sitelerini bakmaksızın Uyumluluk Görünümü'ne zorlar DOCTYPE. Ayrıca, tüm web siteleri için Uyumluluk Görünümü'nü kullanmak için bir onay kutusu da vardır DOCTYPE.

IE Uyumluluk Görünümü Ayarları iletişim kutusu

X-UA-CompatibleUyumluluk Görünümü Ayarlarını geçersiz kılar, böylece sayfa tarayıcı ayarlarına bakılmaksızın standart modda oluşturulur. Bu, standart modunu aşağıdakiler için zorlar:

  • intranet sayfaları
  • yöneticisi “Tüm web sitelerini Uyumluluk Görünümünde görüntüle” seçeneğini varsayılan olarak seçtiğinde harici web sayfaları — büyük şirketleri, hükümetleri, üniversiteleri düşünün
  • istemeden Microsoft Uyumluluk Görünümü Listesine girdiğinizde
  • kullanıcıların Web sitenizi Uyumluluk Görünümü Ayarları'ndaki listeye manuel olarak ekledikleri durumlar

DOCTYPEtek başına bunu yapamaz; bu durumlardan bağımsız olarak Uyumluluk Görünümü modlarından birine girersiniz DOCTYPE.

Hem metaetiket hem de HTTP üstbilgisi belirtilirse, metaetiket öncelik kazanır.

Bu yanıt, IE8 , IE9 ve IE10'da belge moduna karar vermek için tüm kuralların incelenmesine dayanmaktadır . Şuna bakıldığında DOCTYPE, belge moduna karar vermek için son geri dönüş olduğunu unutmayın .


1
İntranet senaryosunda, IE10 varsayılan olarak uyumluluk modunda oluşturulur. Bkz. Stackoverflow.com/questions/13284083/…. Bu etiket internet için varsayılan olarak gerekli değildir, ancak myintenralserver / myapp kullanılırken gereklidir (varsayılan olarak) . Bu yorumu eklemek istedim, çünkü internet ve intranet farkı, ekran görüntüsünde metinden değil, sayfadaki cevapların metninde değil.
yzorg

Haklısın, bu konuda daha net olmalıydım. Gönderiyi yeniden yazdım; ele almam gereken başka bir şey varsa bana bildir. Teşekkürler!
andrewdotn

Teşekkürler! bu cevap intranet siteleriyle ilgili diğer cevaplardan çok daha açıktır. Diğer cevaplar neden ve nasıl yapılacağı ile ilgili teknik ayrıntılara girer. MS IE'den nefret ediyorum. Ayrıca iyi bir yazı: bir paragraf meta etikete neden ihtiyacımız olduğunu açıklığa kavuşturur. Bravo
Aniket Inge

3
Keşke bu cevabı yüz kere değerlendirebilseydim. Hayat kurtaran ekran tam burada. Bunu
yazarken

Harika harika harika! Bu cevap için çok teşekkür ederim.
Seanosapien

25

IE'yi adres çubuğundaki rahatsız edici tarayıcı uyumluluğu düğmesini gizlemeye zorlamak için bunu kullanın:

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

1
'Kenar modu yalnızca test amaçlıdır; üretim ortamında kullanmayın. ' Bkz. Msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx
Carl Onager

4
İyi bir önlem için <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">, chrome=1IE6, 7, 8 kullanıcılarından Chrome Frame'i yüklemelerini / kullanmasını isteyen direktifle birlikte kullanıyorum . HTML5 Boilerplate bile kullanıyor.
Ricardo Zea

10
@ClaraOnager Microsoft bunu söylemesine rağmen, mutlaka haklı oldukları anlamına gelmez. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">Sorunsuz çıktığı günden beri kullandım . Aslında, kullanıcıların IE'sini oluşturduğumuz sayfaları oluşturmak için en son motorunu kullanarak yaparak yüzlerce baş ağrımı kurtardım. Sizin ve Microsoft'un aksine, herkese yukarıdaki meta etiketi her zaman kullanmasını öneriyorum . IE hala ortalıkta olduğu sürece, bu meta etiketi kullanmak için "zorla" olacağız: p
Ricardo Zea

Bu IE11 ile değişti. Bu sürüm, resmi standartlara uygun olarak tarayıcı dünyasına dramatik bir adım attı. Kendini Internet Explorer olarak tanımlamamak için uç noktalara gitti! Şimdi "Netscape" diyor ve gerçek kimliğini vermek için tarayıcı bilgisine hiçbir şey eklemiyor. Bu sürümden sonra IE tarayıcısında hala herhangi bir tuhaflık ile karşılaşıyorsanız, ayarlayarak IE10'a zorlamanız gerekir <meta http-equiv="X-UA-Compatible" content="IE=10">. Sonra kendisini Microsoft Internet Explorer olarak rapor eder.
huşu

herhangi biri bana yardımcı olabilir, aynı ilgili sorunla karşı karşıya: stackoverflow.com/questions/22013880/…
dsi

25

İşaretli yanıta bir yorum ekleyemediğim için bunu buraya göndereceğim.

Doğru cevaba ek olarak bunu doğrulayabilirsiniz. Bu meta etiket yalnızca IE için yönlendirildiğinden tek yapmanız gereken bir IE koşullu eklemektir.

<!--[if IE]>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<![endif]-->

Bunu yapmak başka bir IE koşullu deyimi eklemek gibidir ve sadece IE için çalışır ve başka hiçbir tarayıcı etkilenmez.


4
Koşullu yorumlar <= IE9 HTML'sini hedeflemek için HARİCİ kullanılmamalıdır. (Bu cevap yazıldığında bile doğruydu)
EKW

18

Bence Microsoft'un bu şeması her şeyi açıklıyor. IE'ye içeriği nasıl işleyeceğini söylemek için! DOCTYPE'ın X-UA-Uyumlu meta etiketle çalışması gerekir. ! DOCTYPE'ın kendi başına IE Doküman Modunu değiştirmesi üzerinde bir etkisi yoktur.

resim açıklamasını buraya girin

http://ie.microsoft.com/testdrive/ieblog/2010/Mar/02_HowIE8DeterminesDocumentMode_3.png


3
IE9'u içeren güncellenmiş bir sürümü. OMG ... ie.microsoft.com/testdrive/ieblog/2010/Haziran / 5
Spiralis

3
Ve bu IE10 içerir: msdn.microsoft.com/en-us/library/ff406036%28v=vs.85%29.aspx Farklı bölümlerin kendi ayrı akış şemaları var ...
Spiralis

Bu akış diyagramını yanlış okudunuz. X-UA-Uyumlu'nun yokluğunda tarayıcı <! DOCTYPE> öğesini arayacaktır. Birini bulursa, standartlar modunda ("EmulateIE8" olarak da bilinir) oluşturulur. Başlamazsa, "Tuhaf Mod" a geri döner.
Chuck Le Butt

Resmi Stackoverflow'a yüklediğiniz için teşekkür ederiz. Orijinal Microsoft bağlantıları tamamen öldü.
Elmue

12

Sadece bütünlük için, aslında HTML'nize eklemek zorunda değilsiniz (HTML5'te bilinmeyen http-equiv)

Bunu yapın ve asla geriye bakmayın (ilk apache örneği , nginx için ikinci örnek )

Header set X-UA-Compatible "IE=Edge,chrome=1"

add_header X-UA-Compatible "IE=Edge,chrome=1";

2
@HueiTan - Poster, W3 Doğrulayıcı'yı kullanarak sayfayı doğrulamaya çalıştığınızda bir hata atacağını Bad value X-UA-Compatible for attribute http-equiv on element meta.söylüyor : - Bu, işe yaramayacağı anlamına gelmiyor. Sadece geçerli bir kod değil.
L84

10

Internet Explorer'a en son oluşturma motorunu kullanmasını söyleyin.

<meta http-equiv="x-ua-compatible" content="ie=edge">

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

Bu hattın beklendiği gibi çalışmasını sağlamak için şunlardan emin olun:

  1. Hemen ardından gelen ilk element <head>
  2. Hiçbir koşullu yorumlar üzerinde örneğin meta etiketinin önüne kullanılan <html>elemanın

Aksi takdirde, bazı IE sürümleri bunu görmezden gelir.

GÜNCELLEME

Bu iki kural basitleştirilmiştir, ancak hatırlanması ve doğrulanması kolaydır. Bundan önce başlık ve diğer meta etiketleri koyabileceğinizi belirten MSDN belgelerine rağmen, bunu tavsiye etmem.

Koşullu yorumlarla nasıl çalışır.

Kafandaki öğelerin sırası hakkında ilginç bir makale. (IE için blogs.msdn.com)

REFERANS

Gönderen MSDN belgelerine :

X-UA-Compatible[...] Başlık elemanı ve diğer meta elemanları dışında diğer tüm öğelerden önce web sayfası (KAFA bölümü) başlığında yer almalıdır.


5

web sitenizi sunucu ile aynı ağda kullanıyorsanız IE DOCTYPE rağmen uyumluluk moduna geçmeyi seviyor .
Ekleme meta http-equiv="X-UA-Compatible" content="IE=Edge" , bu istenmeyen davranışı devre dışı bırakır .


'Sunucu ile aynı ağ' için başka bir kelime intranettir ... yani temelde IE10 tüm intranet siteleri için varsayılan olarak kesilmiştir. @AndrewNeitsch answer içindeki ekran görüntüsüne bakın.
yzorg

3

Bu LITERALLY 1 google sorgu uzakta , ama işte gidiyor:

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

Eski belge modlarını anlama

Web sayfasını, Internet Explorer 6'dan IE11'e kadar Internet Explorer tarafından desteklenen en yüksek standart modu olan kenar modunda görüntülemek için aşağıdaki değeri kullanın.

<meta http-equiv="x-ua-compatible" content="IE=edge"

Bunun işlevsel olarak HTML5 dokümanı ile eşdeğer olduğunu unutmayın . Internet Explorer'ı desteklenen en yüksek belge moduna geçirir. Edge Most, Internet Explorer da dahil olmak üzere birden çok tarayıcı arasında birlikte çalışabilirlik açısından rutin olarak test edilen düzenli olarak bakımı yapılan web siteleri için en kullanışlıdır.

Not IE11'den başlayarak, kenar modu tercih edilen belge modu olarak kabul edilir. (Önceki sürümlerde, deneysel olarak kabul edildi.) Daha fazla bilgi için bkz. Belge modları kullanımdan kaldırıldı. Windows Internet Explorer 8'den başlayarak, bazı web geliştiricileri adres çubuğundaki Uyumluluk Görünümü düğmesini gizlemek için kenar modu meta öğesini kullandılar. IE11'den itibaren, düğme adres çubuğundan kaldırıldığı için bu artık gerekli değildir. Internet Explorer sürümüne bakılmaksızın tüm sayfaları standart modda açılmaya zorladığından, Internet Explorer ile görüntülenen tüm sayfalar için kenar modunu kullanmaya cazip gelebilirsiniz. Bunu yapmayın, çünkü X-UA-Uyumlu başlık sadece Internet Explorer 8'den başlayarak desteklenmektedir.

İpucu Internet Explorer'ın desteklenen tüm sürümlerinin sayfalarınızı standartlar modunda açmasını istiyorsanız, önceki örnekte gösterildiği gibi HTML5 belge türü bildirimini kullanın.

Ayrıca arama sonuçları arasında:


2

2.1.3.5 X-UA-Uyumluluk Meta Etiketi ve HTTP Yanıt Başlığı

Bu işlevsellik, Microsoft Edge'in hiçbir sürümünde uygulanmayacaktır.

<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE" />

Bkz. Https://msdn.microsoft.com/en-us/library/ff955275(v=vs.85).aspx

Evet, partiye geç kaldığımı biliyorum, ama sadece bazı sorunlar ve tartışmalar X-UA-Compatibleyaşadım ve sonunda patronum üzerinde çalıştığım tüm belgelerden etiketi kaldırmamı sağladı .

Bu bilgiler güncel değilse veya artık alakalı değilse lütfen beni düzeltin.

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.