Etiketleri kullanarak IE uyumluluk modunu kapat


375

Tüm intranet sitelerinde uyumluluk modunu zorlayan bir istemci için çalışıyorum. Uyumluluk modunu zorlayan HTML'ye koyabileceğim bir etiket olup olmadığını merak ediyordum.


Aradığınız cevabın burada olduğunu düşünüyorum: stackoverflow.com/questions/1014666/…
Gabriel

45
Aslında standartlarını uyumluluk moduna ayarlayan tam tersini arıyordum, bu sadece çılgınca.
Al Katawazi

12
IE7 dışında herhangi bir şeye kilitlenen eski bir uygulamadaki kötü javascript, standartlarını uyumluluğa göre ayarlar. Bir gün, onu değiştirmek için
uğraşacağız

1
@ petethepagan-gerbil onu değiştirmek için uğraştınız mı? : P
icedwater

1
@ icaretwater 6 yıldan fazla bir süre önce şirketten ayrıldım :) Aynı alanda bir değişiklik yaptığımızda sorunları gidermek için küçük iyileştirmeler yaptık, ancak orada teknoloji borcuna öncelik verilmedi. Sonunda sabit olup olmadığını bilmiyorum.
pagan-gerbil'e

Yanıtlar:


535

"Kenar" modu var .

<html>
   <head>
      <meta http-equiv="X-UA-Compatible" content="IE=edge" />
      <title>My Web Page</title>
   </head>
   <body>
      <p>Content goes here.</p>
   </body>
</html>

Bağlantılı MSDN sayfasından:

Kenar modu, Windows Internet Explorer'a içeriği "kilitli" paradigmasını bozan mevcut en yüksek modda görüntülemesini söyler. Internet Explorer 8 ile bu, IE8 moduna eşdeğerdir. Internet Explorer'ın gelecekteki (varsayımsal) sürümü daha yüksek bir uyumluluk modunu destekliyorsa, Edge moduna ayarlanmış sayfalar bu sürüm tarafından desteklenen en yüksek modda görünür; ancak, Internet Explorer 8 ile görüntülendiğinde aynı sayfalar IE8 modunda görünmeye devam eder.

Ancak, üretim kullanımında "edge" modu teşvik edilmez:

Web geliştiricilerinin, Windows Internet Explorer'ın gelecekteki sürümlerinde sayfa içeriği oluşturmanın beklenmedik sonuçları nedeniyle sayfaları ve diğer üretim dışı kullanımları test etmek için Kenar modu kullanımlarını kısıtlamaları önerilir.

Dürüst olmak gerekirse nedenini tam olarak anlamıyorum. Ancak buna göre, şu anda gitmenin en iyi yolu kullanmaktır IE=8.


7
6/8/2012 itibariyle Microsoft IE=10kendi sitelerinde kullanıyor gibi görünüyor . Sitenizi IE10'da (önizleme sürümü) test ettiyseniz, bunu kullanmak güvenlidir; aksi halde IE=9şimdilik bağlı kalmak isteyebilirsiniz .
calvinf

75
Kullanıcı (veya sysadmin) varsayılan olarak uyumluluk modunu Tools->Compatibility View Settingsaçtıysa ve Uyumluluk Görünümünde tüm web sitelerini görüntüle seçeneğini işaretlediyse bunun çalışmadığını fark ettim . Sorunu çözmek için, HTTP yanıtında başlığı döndürmek zorundayım:X-UA-Compatible: IE=edge
speedplane

10
+1 - speedplane - IE10 uyumluluk modu intranet siteleri için varsayılan olarak AÇIK - UGH ... bulduğunuz için teşekkürler!
viperguynaz

132
Bu cevabı bulan ancak onlar için işe yaramayanlar için tavsiye kelimesi. Uyumluluk meta etiketi ilk meta etiket OLMALIDIR ve etiketten önce IE koşullu deyimleri olamaz. Daha: tesmond.blogspot.com/2011/10/…
Chris Sobolewski

2
Teşekkürler Chris! Sonunda yorumunuzu okuduğumda 30 dakika boyunca bununla mücadele ediyordum. İlk bende yoktu.
Hawkee

91

Bu sorunları gidermek için saatler geçtikten sonra ... X-UA-CompatibleDokümanlar'dan bize yardımcı olan bazı hızlı özellikler : http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#ctl00_contentContainer_ctl16

kullanma <meta http-equiv="X-UA-Compatible" content=" _______ " />

  • Standart User Agent modları (non-taklit olanları) görmezden <!DOCTYPE>sayfanıza direktifleri ve IE sürümü tarafından desteklenen standartlara dayalı kılmasıdır (örn IE=8olacak daha iyi itaat masa sınır aralığı ve bazı sözde seçiciler daha IE=7).

  • Oysa Öykün modları herhangi takip etmek IE söylemek <!DOCTYPE>bazlı standartlar modu render seçtiğiniz sürümü sayfanıza direktifleri ve tuhaflıklar modu dayalıIE=5

  • contentÖzellik için olası değerler :

    content="IE=5"

    content="IE=7"

    content="IE=EmulateIE7"

    content="IE=8"

    content="IE=EmulateIE8"

    content="IE=9"

    content="IE=EmulateIE9"

    content="IE=edge"


67

İntranet Bölgesi'ndeki bir sayfa ile çalışıyorsanız, ne yaparsanız yapın IE9'un IE7 Uyumluluk moduna geçtiğini görebilirsiniz.

Bunun nedeni, tüm Intranet sitelerinin uyumluluk modunda çalışması gerektiğini söyleyen IE Uyumluluk ayarlarındaki ayardan kaynaklanmaktadır. Bunu bir grup ilkesi aracılığıyla (veya yalnızca IE'de basitçe) kaldırabilirsiniz veya aşağıdakileri ayarlayabilirsiniz:

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

Bu çalışır (diğer yanıtlarda ayrıntılı olarak belirtildiği gibi), ancak başlangıçta öyle görünmeyebilir: stil sayfaları bildirilmeden önce gelmesi gerekir . Eğer yapmazsanız, ihmal edilir.


3
stil sayfası hakkında uyarı için teşekkürler, bu sorunlara neden oldu ve şimdi nedenini biliyorum!
eMRe

Evet, başlangıçta yerleştirme ile sıkıştırıldı. Bunu eklediğiniz için teşekkürler.
John Moylan

Teşekkürler bu çok yardımcı oldu. IE 11 yüklü olsa bile etkin IE seviyesini 7 olarak ayarlayan bir GPO'ları var. Bu beni js çalışmak için sitede bazı şimler koymak zorunda kurtardı.
Charles Owen

28

Bunun hile yapacağına inanıyorum:

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

28

İlgili bir sorunun bu cevabında önerildiği gibi , Web.Config dosyasında "edge" modu ayarlanabilir. Bu, uygulamanın tek tek sayfalara eklenmesine gerek kalmadan uygulamadan döndürülen tüm HTML'ler için geçerli olmasını sağlar:

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

Aynı adım , IIS sunucusu, tüm web sitesi veya belirli uygulamalar için IIS Yöneticisi kullanılarak "HTTP Yanıt Başlıkları" değiştirilerek de gerçekleştirilebilir .


19

Meta etiket çözümü bizim için çalışmadı, ancak yanıt başlığında ayarlanması:

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

3
'Chrome = 1' için +1; Bunu hiç bilmiyordum. Değeri ne olursa olsun, IE = 10 olarak değiştirmek, sitemde IE = kenarının etkilemediği bir dizi oluşturma sorununu temizledi.

chrome=1Mülkün açıklaması , stackoverflow.com/a/22059516/368691 . Chrome Frame'in kullanımdan kaldırıldığını unutmayın. blog.chromium.org/2013/06/retiring-chrome-frame.html
Gajus

1
diğer yanıtların yorumlarına bakın ... Kullanıcı (veya sysadmin) varsayılan olarak uyumluluk modunu açtıysa Araçlar-> Uyumluluk Görünümü Ayarları'na gidip Uyumluluk Görünümü'nde tüm web sitelerini görüntüle seçeneğini işaretleyerek bunun çalışmadığını fark ettim. . speedplane 19 Nisan 'da 11:29 7 Uyumluluk meta etiketi ilk meta etiket OLMALIDIR ve etiketten önce NO koşullu deyimleri olabilir. Daha fazla: tesmond.blogspot.com/2011/10/… - Chris Sobolewski Ağustos 19 '13, 20:23
felickz

Düzen sayfasındaki ilk satıra koymaya çalıştım. Çalışmıyor, Stu IIS HTTP Yanıt Üstbilgilerini değiştirmekten bahsetti. Denedim. Uygulama havuzunu yeniden başlattım. Daha çok teftiş ederim. Bu sayfa diğer sayfanın altına yerleştiriliyor. Diğer sayfada başka bir meta var. Bu üretim web sitesidir. Bu sayfaya birçok kişi erişiyor. bu etiketi üstüne koymak görev imkansız. Başka bir çözüm ya da ben
vidayım

10

Son deneyimlerime dayanarak bu konu hakkında birkaç not daha. Çalıştığım üniversite, IE 8 ile tüm Intranet Siteleri için uyumluluk moduna ayarlanmış dizüstü bilgisayarlar için çalışıyor. Sitem tarafından sunulan sayfalar için bu modu devre dışı bırakmak için meta etiketi eklemeyi denedim ancak IE bu etiketi sürekli yok saydı. Lance'in görevinde belirttiği gibi, bir yanıt başlığı eklemek bu sorunu çözdü. HTML5 boilerplate yöntemine göre başlığı nasıl ayarladığım:

<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 "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webm|webp|woff|xml|xpi)$">
    Header unset X-UA-Compatible
  </FilesMatch>
</IfModule>

Bu başlığın gerçekten gönderilebilmesi için Apache'de mod_headers'ın açık olduğundan emin olmalısınız. Bu modun açık olduğundan emin olmak istiyorsanız, bunu php çalıştırabilecek bir sayfaya koyun:

<pre>
<?php
    print_r(apache_get_modules());
?>
</pre>

IE8'de .htaccess yöntemi benim için çalıştı + Uyumluluk düğmesini kaldırdı (Düşman No. 1 olarak da bilinir) ve IE8'i uyumluluk modunu kullanmaktan kaçınmaya zorlar. İlgili: Meta etiketi alternatifi, çeşitli bilgisayarlarda yalnızca belirli koşullar altında (IE Voodoo) çalışıyor gibi görünüyor.
William Isted

10

IE8 varsayılan olarak intERnet için standartlar moduna ve intRAnet için ilginçler moduna geçer. Doküman xhtml geçişine ayarlanmışsa HTML meta etiketi yoksayılır. Çözüm, koda bir HTTP üstbilgisi eklemektir. Bu bizim için işe yaradı. Şimdi intranet sitemiz IE8'i uygulamayı standart modda oluşturmaya zorluyor.

Temel sayfa sınıfının (ASP.net C #) PageInit öğesine eklendi:

Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");

başvuru: http://ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html


3

Bunun nedeni, tüm Intranet sitelerinin uyumluluk modunda çalışması gerektiğini söyleyen IE Uyumluluk ayarlarındaki ayardan kaynaklanmaktadır. Bunu bir grup ilkesi aracılığıyla (veya yalnızca IE'de basitçe) kaldırabilirsiniz veya aşağıdakileri ayarlayabilirsiniz:

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

Görünüşe göre uyumluluk görünümü ayarlarını bir grup ilkesi olarak değiştirmek mümkün değil ama belki kayıt defterinde değiştirilebilecek bir şey, bu meta etiketi benim için iyi çalışıyor, gerekli özniteliğin bir html formunun parçası olarak çalışması gerekiyordu , krom ve firefox'ta çalıştı, ancak IE'de çalışmadı.

İşte her bir html 5 öğesini hangi tarayıcıların desteklediğine dair güzel bir görsel.

http://html5readiness.com/

Bir ortak payda olan Google Chrome'a ​​dikkat edin, her şeyi destekler. Umarım bu yardımcı olur


Görünüşe göre Firefox ve IE 10 artık her şeyi destekliyor. Grafik bunu Chrome için olduğu kadar net yapmıyor.
Tony L.

0

Etiketin altına ilk öğe olarak ekleyin.

Bu, IE'yi sayfayı IE'nin fiziksel sürümünde oluşturmaya zorlar ve Tarayıcı "Mod ayarını" yok sayar. Bu geliştirici araçlarında ayarlanabilir, test etmek için IE'nin eski bir sürümüne değiştirmeyi deneyin, bu göz ardı edilmeli ve sayfa tam olarak aynı görünmelidir.


0

Sunucuya erişiminiz varsa, bunu yapmanın en güvenilir yolu sunucunun kendisinde, IIS'de yapmaktır. IIS HTTP Yanıt Başlıkları'na gidin. Ad Ekle: X-UA-Uyumlu
Değer: IE = edge Bu, tarayıcınızı ve kodunuzu geçersiz kılar.


Bu, web sitesi düzeyinde ayarlanırsa IIS'ye yeni dağıtımda sıfırlanır
Eman Pitts

0

Her bir web sayfasının seçilen içeriği yüklemesini ve asp.net kullanmasını istiyorsanız. Bunu Görünüm> paylaşılan> Layout.cshtml başlık etiketinin altındaki ilk etiket olarak uygulamanız yeterlidir

Sadece bir ipucu

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.