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.
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.
Yanıtlar:
<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
.
IE=10
kendi 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 .
Tools->Compatibility View Settings
aç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
Bu sorunları gidermek için saatler geçtikten sonra ... X-UA-Compatible
Dokü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=8
olacak 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"
İ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.
Bunun hile yapacağına inanıyorum:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
İ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 .
Meta etiket çözümü bizim için çalışmadı, ancak yanıt başlığında ayarlanması:
header('X-UA-Compatible: IE=edge,chrome=1');
chrome=1
Mü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
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 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
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.
Bir ortak payda olan Google Chrome'a dikkat edin, her şeyi destekler. Umarım bu yardımcı olur
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.
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.
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