IE9 neden web sitemdeki uyumluluk moduna geçiyor?


197

IE9 beta'yı yeni yükledim ve oluşturduğum belirli bir sitede (HTML5) IE9, manuel olarak söylemediğim sürece uyumluluk moduna atlıyor. Web sitesinin birkaç bölümünü kaldırmayı denedim, ancak değişiklik yapmadım. Dahil tüm CSS kaldırma içerir. Benim başka bir web sitesinde iyi gidiyor.

Ayrıca, IE9 kullanıcı ayarını hatırladığı ve otomatik olarak geri dönemediğiniz için manuel olarak ayarlamayın (veya en azından nasıl bulacağını, özel tarama ve önbellek boşaltarak bile bulamadım)

Neyse. Uyumluluk moduna atladığı site: http://alliancesatwar.com/guide/
Doğru yaptığı bir site : http://geuze.name/basement/ (1'den fazla köprü gönderemiyorum)

Her ikisi de aynı doctypeve hepsini kullanır. Bu sitelerin aynı temel şablonu (kodlama, meta etiketler, doküman türü ve aynı javascript) kullanarak (görünüş dışında) çok ortak noktası vardır.

Birinin bana cevap vermesi harika olurdu! IE7 modunda görüntülenen bir HTML5 web sitesi oldukça ... topal.


5
Lütfen "uyumluluk moduna atlar" açıklayınız? Sayfanın yenilendiğini ve IE'nin bu sayfayı Uyumluluk Görünümü'nde bir sorun nedeniyle yenilediğini söyleyen bir balon görürseniz, bu, oluşturma motorundaki çökmeye benzer bir "sabit onaylama" adı verilen bir IE hatası bulduğunuz anlamına gelir . Bunları bulmak ve düzeltmekle ilgileniyoruz; lütfen connect.microsoft.com/ie adresine bir hata gönderin . Teşekkürler!
EricLaw

Yanıtlar:


263

IE9 documentMode benim için çalışıyor.

X-UA-CompatibleAçık bir documentMode ayarlamak için bir başlık / meta olmadan , aşağıdakilere dayalı bir mod alırsınız:

  • kullanıcının daha önce bu alandaki 'uyumluluk görünümü' düğmesini tıklayıp tıklamadığı;
  • belki de bunun, sitedeki diğer bazı içerikler nedeniyle otomatik olarak gerçekleşip gerçekleşmediği IE8 / 9'un oluşturucusunun çökmesine ve eski oluşturucuya geri dönmesine neden olur;
  • kullanıcının tüm siteleri varsayılan olarak uyumluluk görünümüne koymayı seçip seçmediği;
  • IE'nin sitenin intranetinizde olduğunu düşünüp düşünmediği ve varsayılan olarak uyumluluk görünümüne geçtiği;
  • söz konusu sitenin, Microsoft'un uyumluluk görünümü gerektiren kendi web siteleri listesinde olup olmadığı.

Bu ayarları IE menüsünden 'Araçlar -> Uyumluluk görünümü ayarları'ndan değiştirebilirsiniz. Tabii ki bu menü şimdi gizlice gizlendi, bu yüzden Alt tuşuna basana kadar görmeyeceksiniz.

Bir site yazarı olarak, sitenizin standartlara uyduğundan eminseniz (diğer tarayıcılarda iyi performans gösterir ve hangi tarayıcı geçici çözümlerinin kullanılacağına karar vermek için özellik koklama kullanır), şunları kullanmanızı öneririm:

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

veya HTTP üstbilgisi:

X-UA-Compatible: IE=Edge

IE sürümü ne olursa olsun en son oluşturucu almak için.


79
Önemli not: IE 9, Intranet sitelerini her zaman uyumluluk modunda gösterecek şekilde yapılandırılırsa, ne meta etiket ne de HTTP üstbilgisi bunu geçersiz kılmaz.
Jacob

29
Jacob'un belirttiği gibi, IE varsayılan olarak tüm yerel / intranet sitelerini uyumlu modda görüntüleyebilir. Alt -> Araçlar Uyumluluk Görünümü ayarları'na basın ve kutuyu işaretlemediğinizden emin olun.
Cory Mawhorter

30
Meta etiketi sadece <head> 'den hemen sonra koyduğumda benim için çalıştı (ayrıca aşağıdaki cevaba bakınız). <head> öğesi içinde daha da aşağı koyduğumda, işe yaramadı (hala yırtılmış sayfa var).
Boris van Schooten

13
@Jacob: Bu bir tür yanıltıcı. Evet, uyumluluk Tarayıcı Modunda olacaksınız ve bir çıkış yolu yok. Ancak, HTTP üstbilgisini, IE sürümünün siteniz için en iyi çalıştığı Belge Modunu ayarlamak için kullanmaya devam edebilirsiniz. IE = Edge size her zaman en son oluşturma motorunu vermelidir. Dolayısıyla, teknik olarak uyumluluk modunda olsanız bile, sayfalarınızın normal moddaymış gibi görüntülenmesini sağlayabilirsiniz. Yanılıyorsam beni düzeltin ama en azından İntranet sitemiz tam olarak bu şekilde çalışıyor ("İntranet sitelerini uyumluluk görünümünde görüntüle" ayarı işaretli olsa bile).
mkataja

7
@BorisvanSchooten: Bunun nedeni olup olmadığını bilmiyorum, ancak <meta>etiketlerin işlenmiş bir HTML dosyasının ilk 512 baytı içinde olması gerekiyor. Ben "işlenmiş" diyorum çünkü orada PHP her türlü olabilir, ama işlenmiş kod önemli olan budur. Etiketin <meta>altındaki tüm yorumlarımı nereye koyduğum yere geldim <meta>, böylece gereksinimi kırmıyorum.
doubleJ

33

Koydum

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

sonra ilk şey

<head>

(Bir yerde okudum, hatırlayamıyorum)

Ben işe yaradı inanamadım!


Sekmeyi kapatıp yeni bir sekme açmanız gerekiyor, bunu denediniz mi?
Zeb

1
"Yapmadı" yapmadı "dedi);)
Nathan JB

14
+1, bu çok değerli bir not . Bu ifadeden önce <script>içeride varsa , (IE = edge) yoksayılır. <head>meta
jakub.g

22

IE'yi IE9 standartları modunda görüntülenmeye zorlamak için şunu kullanmalısınız:

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

Bazı koşullar IE9'un uyumluluk modlarına geçmesine neden olabilir. Varsayılan olarak bu intranet sitelerinde gerçekleşebilir.


Diğer web sitesinde çalışır. Yani bu olmamalı. Ayrıca, her yeni IE sürümü olduğunda manuel olarak güncellemeniz gerekeceğinden bu meta etiket kötüdür.
René

2
Üzgünüm, sorununuzu çözemiyorum. Bununla birlikte, IE=edgebunun yerine kullanmak için cevabımı düzenledim , bu da her zaman mevcut olan en son motorun kullanımını çağırıyor.
Delan Azabani

Varsayımınız yanlış. Demolar, kullanıcı iterse, site içeriği düzgün çalışmayacağından IE'nin Uyumluluk Görünümü düğmesini göstermesini önlemek için X-UA-Uyumlu belirtir.
EricLaw

@ ReneGeuze, yanlış anladın. Edge her zaman IE'nin en son sürümünü ifade eder.
neoswf

@DelanAzabani benim intranet portal benim uyumluluk moduna geçiş bile önerdiğiniz gibi meta etiketi ekledi. nasıl çözmek ve standart mod örneği üzerinde kalmak öneririz - IE 8, IE 8 birlikte erişilebilirlik sonra sadece IE 8 istiyorum.
dsi

6

Ben ayrı bir StackOverflow iş parçacığında bu yorumu yayınladım, ama burada tekrar değer olduğunu düşündüm:

Şirket içi ASP.Net uygulamamız için, web sayfasına, web.config dosyasına veya arkadaki koda "X-UA-Uyumlu" etiketini eklemek kesinlikle bir fark yaratmadı.

Sadece bizim için çalıştı şey elle IE8 bu ayarı devre dışı bırakmak için oldu:

resim açıklamasını buraya girin

(İç çekmek.)

Bu sorun yalnızca intranet sitelerinde IE8 ve IE9 ile ortaya çıkmaktadır. Harici web siteleri iyi çalışır ve doğru IE8 / 9 sürümünü kullanır, ancak dahili web siteleri için IE9 aniden IE7 olduğuna karar verir ve HTML 5 desteği yoktur.

Hayır, bu mantığı da tam olarak anlamıyorum.

İsteksiz çözümüm, tarayıcının HTML 5 desteğine sahip olup olmadığını (bir tuval oluşturarak ve geçerli olup olmadığını test ederek) test etmek ve geçerli değilse kullanıcıya bu mesajı görüntülemek olmuştur:

resim açıklamasını buraya girin

Özellikle kullanıcı dostu değil, ancak kullanıcının bu sinir bozucu ayarı kapatmasını sağlamak, kurum içi HTML 5 web uygulamalarını düzgün bir şekilde çalıştırmalarını sağlamanın tek yolu gibi görünüyor.

Veya kullanıcıların Chrome'u kullanmasını sağlayın. ;-)


1

Http://www.HTML-5.com/index.html adresindeki sitenin X-UA Uyumlu meta etiketi var, ancak yine de adres çubuğundaki "bozuk sayfa" simgesiyle belirtildiği gibi Uyumluluk Görünümü'ne giriyor. IE 9'u (Son Sürüm 9.0.8112.16421) Standartlar Modunda bir sayfa oluşturmaya zorlamak için menü seçeneğini nasıl elde edersiniz? Rene Geuze tarafından belirtilen ek menü seçeneklerini görüntülemek için o yırtık sayfa simgesini ve "Alt" tuşunu sağ tıklamaya çalıştım, ancak bunlar işe yaramadı.


4
Meta çevresindeki IE koşullu yorumunu kaldırın. Sayfayı şu application/xhtml+xmlşekilde sunuyorsunuz, bu nedenle XML ayrıştırma kuralları kullanılıyor; XML koşullu yorumları desteklemez. Her durumda bir anlam ifade etmiyor; Tarayıcı bir mod seçmelisiniz önce onu yorumlamak koşullu Ne comments karar verebilir.
bobince

1

Daha modern web sitelerinde bir yana, html etiketinizde kazan plakasına göre koşullu ifadeler kullanıyorsanız, bu herhangi bir nedenle ie9'un uyumluluk moduna varsayılan olarak ayarlanmasına neden olur. Buradaki düzeltme, koşullu ifadelerinizi html etiketinin dışına taşımak ve bunları gövde etiketine, diğer bir deyişle baş bölümünün dışına eklemektir. Bu şekilde, eski tarayıcıları hedeflemek için stil sayfanızdaki bu sınıfları kullanmaya devam edebilirsiniz.


0

Bana iyi geliyor:

alternatif metin

Küresel ayarlarda falan yapmadığınızdan emin misiniz? Bu, Windows 7'de beta'nın temiz bir yüklemesidir. Geliştirici araçları, sayfanın varsayılan olarak IE9 Standart Modu olduğunu bildirir.


Bu hatayla ilgili 1'den fazla rapor aldım. Her ne kadar tüm alt dizinleri de uyumluluk modunda oluşturması temel dir ( alliancesatwar.com ) ile ilgili olsa da. Ama sonra soru var, web sitesinin kökünde IE web sitesi uyumluluk modunda hale getirir? Belki de en azından bu kılavuz doğru kodlanmıştır. Umarım öyleyse.
René

@Rene Strange, sadece ana sayfadan Rehber bağlantısını tıklayarak çoğalttım. Ama bu sadece bir kez oldu ve birkaç denemeden sonra bunu yeniden üretmedim, sadece bir kez
Yi Jiang

0

Son zamanlarda bu sorunu çözmek zorunda kaldım ve işte yaptım:

Her şeyden önce, bu çözüm Apache sunucusunu ayarlamaktır.

İkinci ana düşünce IE9'da bir meta etiketinin çalışmadığı anlamına gelen bir hata var, bu çözüm yerine bunu deneyin

  • httpd.conf dosyanızı bulun / açın
  • uncomment / veya aşağıdaki satırı ekleyin

    LoadModule headers_module modules/mod_headers.so
  • aşağıdaki satırları ekle

    <IfModule headers_module>
        Header set X-UA-Compatible: IE=EmulateIE8
    </IfModule>
  • Apache sunucunuzu kaydedin / yeniden başlatın,

  • IE9 ile sayfanıza göz atın, wireshark veya kemancı gibi araçları kullanın veya üstbilginin orada olup olmadığını kontrol etmek için IE geliştirici araçlarını kullanın
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.