Internet Explorer 11 çalışmayan meta etiket aracılığıyla "intranet sitelerini uyumluluk görünümünde göster" seçeneğini devre dışı bırakın


101

doctypeInternet Explorer'ı eski bir tarayıcı sürümünü taklit etmemeye zorlamak için aşağıdaki html5 ve kenar uyumluluğu meta etiketini kullanıyordum ve bu iyi çalıştı.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>My title</title>
    <meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
</head>
<body>
</body>
</html>

Bunu bu şekilde yapmamın nedeni, çalıştığım yerin tüm intranet siteleri için uyumluluk görünümünü etkinleştirmek için bir ilke ayarı kullanması ve bu EDGEayarı kullanan bu yaklaşımın Internet Explorer 9'da işe yaramasıdır.

Intranet site uyumluluk görünümü ayarı

Bir aydan fazla bir süre önce Internet Explorer 11'e yükseltildim ve site hala beklendiği gibi çalışıyordu.

Bugün bu beklendiği gibi çalışmayı bıraktı, kesin olarak söyleyemem ama bence uyumluluk görünümünü zorlayan politikanın IE11'de etkinleştirilmediğini ve şimdi olduğunu düşünüyorum ... ve bu etkinleştirildiğinden beri uyumluluk meta etiketi artık yok bekleneni yapıyor ve bu site IE8'i taklit eden Kurumsal modda çalıştırılıyor.

Bunu nasıl düzelteceğini bilen ve uyumluluk "Kurumsal mod" uygulandığında IE11'i bir intranet sitesinde kullanılmaya zorlayan var mı? ve tarayıcı ayarlarından devre dışı bırakılamaz mı?

DÜZENLE

Bu cevap https://stackoverflow.com/a/18257208/98706'da açıklandığı gibi web.config dosyama özel bir başlık eklemeyi denedim.

ve bu benim için işe yaramadı, aşağıdaki iletiyi hala geliştirici araç çubuğu konsolunda alıyorum

HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.

Sanki sürüm 8, edgebu intranet uyumluluk ayarı IE11'de etkinleştirildiğinde kabul ediliyor gibi.

Bu gönderi: https://www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css---disizing-compatability-mode bunu iyi açıklıyor, henüz bu başlığı kodla ayarlamayı denemedim ve kullanıcılarımızın tarayıcı ayarlarını değiştirme erişimi yok .. diğer değişikliklerin hiçbiri henüz işe yaramadı.

GÜNCELLEME

Kurumsal mod ile uyumluluk modu arasındaki farkın ne olduğu hakkındaki bu yazıdaki yorumuma bakın, çünkü önemli.


Kurumsal mod uyumluluk görünümünden farklıdır, lütfen devre dışı bırakmanın yolları için stackoverflow.com/a/26463309/98706 adresine bakın, ancak benim durumumda onu kapatmak kadar basit değil, belirli intranet siteleri için geçersiz kılmak istedim bir meta etiket kullanıyorum ama bu işe yaramadı, çünkü sitelerimiz artık bir beyaz listede olduğu için tekrar denemedim.
Pahalı

Yanıtlar:


93

Emin olmak:

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

<meta>sayfanızdaki ilk etikettir, aksi takdirde IE buna saygı göstermeyebilir.

Alternatif olarak, sorun, IE'nin bu web sitesi için Kurumsal Modu kullanıyor olması olabilir :

  • Sorunuz, konsolun şunları gösterdiğinden bahsetti: HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
  • Öyleyse, kurumsal modu devre dışı bırakmanız (veya bunun gibi ) veya IE'deki Araçlar menüsünden o web sitesi için kapatmanız gerekebilir .
  • Ancak Kuruluş Modu gerektiğini teoride X-UA Uyumlu etiketi ile geçersiz kılınan olabilir, ama IE bir hata olabilir ...

Evet, bunu o zamandan beri zaten yaptım, maalesef işe yaramadı :(
Pricey

Bu web sitesi için Kurumsal Mod açık olabilir (sorunuza bağlı olarak) ... Cevabımı güncelledim, yardımcı olacaksa bana bildirin
2014

2
"Kurumsal Mod" ve "Uyumluluk Görünümü" benzer olsa da farklıdır. "Intranet sitelerini Uyumluluk Görünümünde göster" işaretlenmiş olsa bile, X-UA-Uyumlu etiket bunu geçersiz kılmalıdır. Ancak Enterprise Modu bunu geçersiz kılabilir ... sitenizde kurumsal mod simgesini ( media.askvg.com/articles/images5/… ) görüyor musunuz?
serçe

1
Ayrıca F12'ye basıp öykünme sekmesine bakarsanız ne der? Neden belge modunu kullandığını size söylemelidir. Uyumluluk görünümüne değil, Kurumsal moda geçtiğinizi düşünüyorum.
serçe

19
Bu çok! @ # $ Can sıkıcı, dünya çapında yüz binlerce saat web geliştiricisini boşa harcıyor.
Sam Watkins

19

Bu sorun genellikle web sitesi / intranet URL'sinin şunlardan birine yerleştirilmesinden kaynaklanır:

  • Uyumluluk Modu Listesi
  • Internet Explorer Intranet Bölgesi
    ( Uyumluluk Görünümü ayarında intranet sitelerini göster ayarı etkinken)
  • Kurumsal Mod Listesi

Kurumsal ağlarda, bu uyumluluk görünümü ayarları genellikle grup ilkesi aracılığıyla merkezi olarak kontrol edilir . Sizin durumunuzda, suçlu Kurumsal Mod gibi görünüyor.

IE 11 Kurumsal Mod

Maalesef META ayarı X-UA-Compatible bunu geçersiz kılmayacaktır .

Son Kullanıcılar için

Bazen son kullanıcıların bunu geçersiz kılmasının tek yolu F12'ye basmak ve Emülasyon Sekmesi altındaki Belge Modunu değiştirmektir . Ancak bu ayar kalıcı değildir ve Geliştirici Araçları kapatıldıktan sonra geri dönebilir.

Ayrıca sitenizi Intranet bölgesinden dışlamayı da deneyebilirsiniz. Ancak Intranet bölgesine ait olan etki alanlarının listesi genellikle grup politikası tarafından da kontrol edilir, bu nedenle bu çalışma şansı zayıftır.

Intranet bölgesine ait alanların listesini görmek için şu adrese gidin:

Araçlar -> İnternet Seçenekleri -> Güvenlik -> Siteler -> Gelişmiş

Liste, alt alan adınızı içeriyorsa ve soluk görünüyorsa, ağ yöneticiniz izin verene kadar uyumluluk görünümünü geçersiz kılamazsınız.

Grup ilkesindeki uyumluluk görünümü ayarlarının değiştirilmesine izin vermek için gerçekten ağ yöneticinize başvurmanız gerekir.

Ağ Yöneticileri için

Web sitesini Geliştirici Araçları açıkken (F12) yüklemek, genellikle IE'nin daha eski bir moda geçme nedenini bildirir.

Yukarıda bahsedilen 3 ayarın tümü genellikle Grup İlkesi aracılığıyla kontrol edilir, ancak bazen kullanıcı makinelerinde geçersiz kılınabilir.

Sorun Kurumsal Mod ise (orijinal poster için geçerli olduğu gibi), aşağıdaki iki makale yardımcı olabilir:


Harika cevabınızı, son araştırmalar sırasında keşfettiğim bazı ayrıntılarla genişlettim. Umarım sorun olmaz.
Simon East

8

ASP.NET MVC projesi oluşturanlar için şunları eklediğinizden emin olun:

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

Düzen (şablon) sayfanıza etiketleyin. Sadece bu meta etiketi alt sayfalarıma eklediğimi fark etmek için iki saat boyunca hata ayıklama ve ince ayar yaptım. Düzen sayfama eklediğim anda, tarayıcı EDGE modunda mükemmel bir şekilde yüklendi.


Benim sorunum, tarayıcıyı IE8'i taklit etmeye zorlayan IE11'de yeni bir Kurumsal mod ile ilgiliydi. Bu meta etiketin geçersiz kılmak için kullanıldığı uyumluluk moduyla aynı şey değildir. Bunu doğru kullanıyordum.
Pahalı

Yorumum, ASP.NET MVC'de siteler oluşturan aynı belirtilere sahip diğerlerine yardımcı olmayı amaçlıyordu. Özellikle sana hitap etmiyordum.
Jason Marsell

Meta etiket, .NET / MVC olmayan siteler için (Kurumsal mod sorunları için değil, uyumluluk modu sorunları için) çalışacaktır, ASP.NET'e özgü değildir
Dan Harris,

4

İşaretli cevap doğru cevaptır. Ancak, Pricey, bunu AD ve masaüstü yönetici gruplarınızla takip etmelisiniz. IE11 Kurumsal Mod site listesini kötüye kullanıyorlar. Microsoft, bunun bir kuruluş içindeki tüm intranet sitelerinde kullanılmasını hiçbir şekilde HAYIR ETMEZ. Bu, kurumsal web sitesinin ilerlemesinin belası olan mevcut "tüm intranet sitelerini uyumluluk modunda işle" ayarının yayılması anlamına gelir.

İşletme Modu listesinde, oluşturma gereksinimleri belirtilmiş olarak listelenen eski bir tarayıcı modunu gerçekten gerektiren bir avuç siteyle bir "Kara liste" olarak uygulanması amaçlanmıştır. Kuruluşunuzdaki diğer tüm siteler daha sonra Edge'i kullanmak için serbest bırakılır. Başlangıçta dahil edilen tüm intranet siteleriyle bunu uygulayan kuruluşunuzdaki kişiler, Enterprise Mode'un nasıl uygulanması gerektiğini tamamen yanlış anlamışlardır.


Evet, kesinlikle bunu yapmalılar ama maalesef bu konuda söz hakkım yok ama onlarla birlikte gündeme geldi.
Pahalı

1

Soru biraz eski ama çok benzer bir sorunu çözdüm. Sorumlu olduğum site de dahil olmak üzere burada birkaç intranet sitemiz var ve diğerleri uyumluluk modu gerektiriyor veya bozuyorlar. Bu nedenle, site kuralları intranet sitelerinde IE'yi uyumluluk moduna varsayılan olarak ayarlar. Kendi öğelerimi yükseltiyorum ve artık buna ihtiyacım yok; Aslında, kullanmaya çalıştığım bazı özellikler uyum modunda doğru görünmüyor. Sizin gibi meta IE-Edge etiketini kullanıyorum.

IE, tam adresleri olmayan web sitelerinin intranet olduğunu varsayar ve buna göre hareket eder. Bunu göz önünde bulundurarak, IIS'deki bağlantıları yalnızca tam nitelikli adresi dinleyecek şekilde değiştirdim, ardından uygun olmayan adresi dinleyen sahte bir web sitesi kurdum. İkincisi, tüm trafiği tam nitelikli adrese yönlendirerek, IE'yi bunun harici bir site olduğuna inandırır. Site, Intranet Sitelerinde Uyumluluk Modu kutusu işaretli olsun veya olmasın doğru şekilde işliyor.


web.config erişiminiz varsa bkz. stackoverflow.com/questions/2518256/… .
fontophilic

Bu soruyu daha önce görmüştüm ama sanırım HTTP başlık satırını META satırı için yanlış anladım ve zaten denediğimi düşündüm. Bunu düzelttikten sonra iyi çalıştı. Beni tekrar yönlendirdiğiniz için teşekkürler.
Mike Anderson

Aynı uyumluluk EDGE ayarını web yapılandırmasına uygulamayı denedim ve bu benim için işe yaramadı, bu çalışmayı bulmamın tek yolu, belirli web sitelerimizin beyaz listeye eklenmesini istemek, böylece yeni Uyumluluk modundan farklı bir şey gibi görünen IE11 Enterprise modu. Bu, her seferinde yapmak için atlamak zorunda olduğum döngüler nedeniyle benim için hiçbir şekilde hoş bir çözüm değil.
Pricey

Benimle aynı yoldan gitmiş gibisin. Yapmam gereken 2 şey var. 1, sayfanın META etiketindeki EDGE ayarıydı. Bunu web.config dosyasında yapabilirsiniz (veya bilmiyorum; bilmiyorum) ama bunu site ana sayfasında yaptım. Diğeri ise özel HTTP başlığını web.config dosyasına eklemekti.
Mike Anderson

1

Bu, bazı iyi bilgilerle ilgili eski bir sorundur. Ama az önce bulduğum şey, bir FQDN kullanmanın IE 9 - 11'de Uyum modunu kapatmasıdır. Örnek. Birlikte compat sorun var
http: // lrmstst01: 8080 / JavaWeb / login.do
ama sorunlar uzağa gitmek
http://lrmstst01.mydomain.int:8080/JavaWeb/login.do
Not: .int parçasıdır dahili alanımız


Bu bağlantılar geçersiz. FQDN ile bir bilgisayar adıyla bir url örneği olarak kullanılırlar.
Dean p

2
Uzman ipucu: Example.com sadece bu amaç için var
Temel

Bu hala bir sorundur ve bu yorum çözüme hiçbir şey eklememektedir.
Diana

0

Bir Güvenilen Siteler listesine veya yerel ayara ekleyerek Güvenilen Siteler bölgesine taşıyın. Bu, onu Intranet Bölgesi dışına taşıyacak ve Uyumluluk'ta görüntülenmeyecektir. Görünüm.


Ps Bunun işe yaradığını biliyorum çünkü şirketimde, X-UA etiketleriyle yazılmayan ve oluşturmayı istedikleri şekilde uygulamak için yazılmayan tarayıcı tabanlı ürünler için yaptığımız şey bu.
Greg C.

Bunun muhtemelen şirket çapında bir ayar olduğu göz önüne alındığında, cevabınızın her kullanıcının makinesine uygulanması gerekir ki bu pek de ideal değildir.
MattD

0

Aşağıdaki mülkü IIS siteleri için web.config dosyasına ekleyin. Bu benim için IE11'deki intranetimde çalıştı.

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

Lütfen biletle ilgili güncellememe bakın, Kurumsal mod ve Uyumluluk modu 2 farklı şeydir
Ücretli

0

Bu sorunu, kullanıcıyı intranet'i barındıran sunucunun FQDN'sine yeniden yönlendirerek çözdüm.

IE, "intranet" sitelerini tespit etmek için muhtemelen dünyanın en kötü algoritmasını kullanıyor ... aslında, server.domain.tld'yi belirtmek benim için sorunu çözüyor.

Evet, doğru okudunuz, IE, TCP / IP'yi duyan herhangi bir geliştiricinin yapacağı gibi, özel IP adresiyle değil intranet sitelerini algılar, hayır, URL'nin "ana bilgisayar" kısmıyla, eğer etki alanı parçası yoksa, içsel olun.

IE geliştiricilerinin en temel TCP / IP kavramlarını anlamadıklarını bilmek korkutucu.

Bunun BÜYÜK bir kurumsal müşteride olduğunu unutmayın, sizin için GPO'yu değiştirmelerini sağlamak Alpleri 4 metre doğuya taşımaya çalışmak gibidir, olmayacak.


IE muhtemelen bir DNS araması yapar ve IP'yi bundan bilir. MS olduğu için muhtemelen AD yapabilir, ancak DNS daha mantıklı.
smoore4

@SQLDBA negatif, IP belirtirseniz, örneğin 10.0.0.1, ana bilgisayar "intranet" sitesi olarak algılanmaz ... DNS ile hiçbir ilgisi yok, AD ile ne demek istiyorsunuz? AD'ye bağlandığını ve oradaki ana bilgisayarı aradığını mı söylüyorsunuz? Mantıklı değil, neden bunu yapsın? Sonra tekrar, bir nedenden dolayı Microsoft'durlar ™.
carpy

0

Değeri ne olursa olsun, sorunu IE11'de de yaşadım:

  • Ben değil Kurumsal modunda.
  • "Intranet sitelerini Uyumluluk Görünümünde göster" işaretlendi.
  • Soruda belirtilen tüm <!DOCTYPE html>ve IE=Edgeayarları aldım
  • Meta başlığı gerçekten de öğenin 1. <head>öğesiydi

Bir süre sonra şunu öğrendim:

  • sunucuya gönderilen Kullanıcı Aracısı başlığı IE7 idi ama ...
  • JavaScript değeri IE11 idi!

HTTP Başlığı :

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E) fakat

JavaScript :

window.navigator.userAgent === 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko'

Bu yüzden müşteri tarafında kontrolü yaptım.

Ve BTW, bu arada, kullanıcı aracısını kontrol etmek artık tavsiye edilmiyor. Bkz. Https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent (ancak iyi bir durum olabilir)

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.