Internet Explorer 11, Internet Explorer 8 belge modunu taklit ederken bile neden koşullu yorumları kabul etmiyor?


110

Belge modunu "8" olarak değiştirmek için yeni Internet Explorer 11 geliştirici araçlarını kullanıyorum, ancak koşullu yorumlar hala göz ardı ediliyor, yani düzgün bir şekilde ayrıştırılmıyorlar ve normal yorumlar gibi davranıyorlar. Dolayısıyla, koşullu yorum içinde başvurulan herhangi bir dosya tarayıcı tarafından istenmez / yüklenmez.

Bu neden oluyor? Bu bir böcek mi?

Bunun gerçekten düzeltilmesi gereken bir hata olduğunu düşünüyorsanız, lütfen içeri girin ve bunu bu sorun için bildirilen Microsoft hata raporunda yeniden oluşturabileceğinizi söyleyin:
F12 Developer aracılığıyla belge modlarını taklit ederken koşullu yorumlar çalışmıyor Araçlar .

Güncelleme: Bu sorunun söz konusu hata raporunda düzeltildiği bildirilmiştir.


18
Kendime aynı soruyu soruyorum! IE10'daki koşullu yorumları bıraktıklarını biliyorum, ancak IMHO öykünücüsü eski tarayıcıları test ederken bunları dikkate almalıdır .
Alexander Rechsteiner

12
Nitekim, bu özelliği kullanılamaz hale getirir.
thasmo

3
Asıl soru, neden uyumluluk modunu kullanıyorsunuz? Benim tavsiyem, veba gibi uyum modundan kaçınmaktır. Tanımladığınız sorundan bağımsız olarak kesinlikle test etmek için uygun değildir, çünkü uyumluluk modunu ilk başlattıklarında onunla ilgili bilinen hatalar ve tuhaflıklar vardır. Geriye dönük uyumluluğu test ediyorsanız, gerçekten IE8'in (ve IE9'un vb.) Gerçek bir kopyasını kullanmanız gerekir. Modern.ie adresine gidin ve test için sağladıkları VM'leri indirin.
Spudley

19
IE hata izleyicisinde açık bir hata var. Herkesi Microsoft'a ziyaret edip bunu yeniden üretebileceğinizi söylemeye davet ediyorum. connect.microsoft.com/IE/feedback/details/806767/…
Evgeny

15
Test için uyumluluk modunu kullanmanın her tarayıcı için 1/2 gigabaytlık bir görüntü indirmekten daha mantıklı olduğunu düşünüyorum. Yani böcekler var (ve bu muhtemelen onlardan biri), ancak% 99, sadece çalışıyor.
Rolf

Yanıtlar:


29

göre göreJacob Rossi [MSFT]

Bu, geçen hafta yayınlanan IE11 Güncellemesi 1'de düzeltilmelidir .

Bu 22 Nisan 2014'te yayınlandı.

Kendi kendime birkaç test çalıştırdığımda, bu sorun giderilmiş gibi görünüyor ve şimdiye kadar üretilmiş en harika tarayıcıyı test etmek için her şey sorunsuz bir şekilde çalışıyor ... Internet Explorer!


4
Bunun daha fazla oylanması gerekiyor. Buraya gelmek için iki yığın taşma yanıtını araştırmam gerekti.
Tek

@Lynda: IE11 sürümünüzü gönderebilir misiniz? benimki11.0.9600.17631
Mohamed Hussain

1
@MohamedHussain - Benim versiyonum 11.0.9600.17690IC.
L84

3
Alaycı olmalısın.
paddotk

IE'nin 'en harika tarayıcı' olması hakkında?
paddotk

20

Kullandığım HTML5 semantik öğelerimin Internet Explorer 8 ve altı için oluşturulduğundan emin olmak için bunu Windows 7'de Internet Explorer 11'de kullanmayı denedim (koşullu yorumlar aracılığıyla) ve tarayıcı bunları yok sayıyor. -_-

Bu özellik Internet Explorer 10'da mükemmel bir şekilde çalıştı ve Microsoft bunu düzeltmek zorunda kaldı, değil mi?

<!--[if lte IE 8]><script src="ie8-html5.js"></script><![endif]-->

Bunun dışında, aslında değişiklik yaratan Internet Explorer'dan keyif alıyorum.


4
Evet, gerçekten çalışan tüm animasyonlarla IE 11 daha iyi bir deneyim :). Evet, MS'in, kullanıcılar tam da alışmaya başladıkları sırada bazı şeyleri "düzeltme" geçmişi vardır. Windows XP'ye yaptıklarına bakın ... Bazı insanlar "Bozulmayanları tamir etmek" derdi. Her neyse bu berbat
Rolf

9
Internet Explorer tarayıcıları çok kötü. Sürümler arasında tutarlılık yok. Bunu kim geliştirdi? büyük annem bile daha iyi bir iş çıkarabilir!
Adrien Be

4
DÜZENLEME: 22 Ocak 2014 tarihinden beri bunu düzeltiyorlar
Adrien

@AdrienBe Well, bu kesinlikle doğru yönde atılmış bir adım.
DylRicho

1
@Anthony Cevabım yanlış mı? Nasıl yani? Temelde az önce söylediklerini söylüyor.
DylRicho

17

Bu benim için çalıştı ve en zarif / kolay düzeltme gibi görünüyor ( Internet Explorer 10 ve Internet Explorer 11 , bunu destekleyen tek tarayıcılar galiba -ms-high-contract):

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* IE10+ specific styles go here */
}

Mükemmel, teşekkürler. Microsoft bu karmaşayı ne zaman öldürecek?
Kohjah Breese

Bunun için tank, IE 11 eski koşullu yöntemi kabul etmiyor. <! - [if IE]>
Gino

8

Geçenlerde aynı problemle karşılaştım. Ayrıca bazı koşullu yorumların işe yaradığını buldum:

  • gtve iyi ltçalıştı
  • gteve ltehiç çalışmadı

Dolayısıyla, olası çözümlerden biri, koşullu ifadeleri gtve ltoperatörlerini kullanacak şekilde değiştirmektir .

Daha kullanışlı bulduğum diğer alternatif ise browserstack gibi bir servis kullanmaktı .


8

Bunun için başka bir çözümüm var.

Internet Explorer 8 uyumluluk modu açık olan Internet Explorer 11 , 'MSIE 8.0' dizesini içerir, bu nedenle:

(PHP örneği)

if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 8.0') !== false) {
    $head[] = sprintf('<link rel="stylesheet" href="ie8.css" />');
}

2
Belge modlarını test ettim ve kullanıcı aracısını değiştirmiyor gibi görünüyor ?!
mgutt

@mgutt Haklısın. Emülasyonda iki seçenek vardır - Belge modu ve Kullanıcı aracısı. Belge modu, tarayıcının çalışma şeklini ve sayfayı nasıl oluşturduğunu değiştirir ve Kullanıcı Aracısı, tarayıcının sürümü hakkında hangi tarayıcının siteyi anlattığını değiştirir. (benim örneğimde bu bilgiyi içeren $ _SERVER ['HTTP_USER_AGENT'] değişkendir) Yani temelde bu iki seçeneği de örneğin IE8 olarak değiştirmeniz gerekir.
Andrei Konstantinov

@ Andrew Teşekkür ederim. Şimdi ayarı buldum. Sorun Almanca çevirisiydi. "Kullanıcı aracısını" "Zeichenfolge des Benutzer-Agents" ile tercüme ettiler ve bunun karakter kümesi anlamına geldiğini düşündüm. Bazı şeyler tercüme edilmemelidir;)
mgutt

2
Bu çözüm en iyisidir. Bunu ASP.NET MVC Razor'a dönüştürdüm ve mükemmel çalışıyor: @ {if (Request.UserAgent.Contains ("MSIE 8.0")) {/ * meta etiketiniz burada * /}}
Valerio Gentile

Bu site, kullanıcı aracısı dizelerinin tüm permütasyonlarının neye benzediğine dair kullanışlı bir referanstır: useragentstring.com/pages/Internet%20Explorer
Drew

4

Ben de aynı sorunu yaşadım - bütün sabah beni çılgına çevirdi. Modernizr'i ekledim ve yepnope.js dahil tüm seçenekleri seçtim.

Şimdi benim testim şuna benziyor:

Modernizr.load({
            test: Modernizr.canvas,
            nope: ['Content/Site-ie-8.min.css', 'Content/font-awesome-ie7.min.css']
});

Bu durumda tuvali test ederim (Internet Explorer 9'dan önce desteklenmez), bu yüzden koşullu içeriğimi yüklerim. Bu, artık Internet Explorer 11 geliştirici araçlarında tarayıcı modları değiştirilirken çalışıyor.


Koşullu yorumlar, komut dosyasına veya herhangi bir üçüncü taraf koduna dayanmaz.
Walf

@Walf - doğru, ancak aynı zamanda IE'de desteklenmiyorlar. Buraya bakın: msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx
El Kabong

3

Burada bahsedildiğini görmedim, ancak bu hata raporunda , uyumluluk görünümü ayarlarını değiştirirseniz, koşullu yorumların beklendiği gibi çalıştığı belirtiliyor. Yani:

  1. IE11'de "Araçlar" ı tıklayın
  2. Uyumluluk Görünümü ayarları
  3. URL'yi yazın ve Ekle'yi tıklayın

Yerel ana makinemde şimdi iyi çalışıyor gibi görünüyor. Bunu kapsamlı bir şekilde test etmedim ama belki birine yardımcı olabilir.


Ancak web sitenizin ziyaretçilerinin aynı sonucu almak için aynı şeyi yapması gerekir. İşe yaramaz hale getiriyor.
paddotk

Evet. Ancak bu, IE11 geliştirici araçları aracılığıyla eski IE sürümlerini test ediyorsanız içindir. Yani IE11 kullanılıyor ama IE8 olarak çalışıyor, koşullu yorumlar çalışmayacaktır. Aslında IE8 kullanan biri için koşullu yorumlar işe yarayacaktır. Muhtemelen ^ _ ^
Just Plain High

1

' gt' Ve ' lt' gibi bazı koşullu yorumlar çalışıyor , ancak örneğin <!--[if IE 8]>çalışmıyor. Bu, web sayfalarının Internet Explorer tarayıcılarının farklı sürümlerinde nasıl göründüğünü denemek isteyen geliştiriciler için kesinlikle elverişsizdir, ancak hepsi kötü haber değildir.

Koşullu yorumlar çalışmıyor olsa da, stil sayfalarını birer birer ekleyerek web sayfanızın her bir Internet Explorer sürümünde nasıl göründüğünü test edebilirsiniz: Diyelim ki Firefox, Chrome, Internet Explorer 10 ve Internet Explorer için bir stil sayfanız var 11 adında ' screen.css' ve başka bir stil sayfası YALNIZCA Internet Explorer 9 için ' screen-ie9.css' ve SADECE Internet Explorer 8 için 'screen-ie8.css ' olarak .

Web sayfalarınızı YALNIZCA Internet Explorer 9 için test etmek üzere şunu yapabilirsiniz:

<link rel="stylesheet" href="path/css/screen.css"     type="text/css" />
<link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" />

ve F12 geliştirici araçları, Emülasyon bölümünde, 'Belge Modu'nu' 9 've' Kullanıcı aracısı dizesini '' Internet Explorer 9 'olarak ayarlayın. Belge Modu, Internet Explorer 9'un kullandığı Standarttır ve Kullanıcı aracısı dizesi tarayıcının kendisidir.

Not: ' screen.css' temel stil sayfanız olduğunu varsayıyorum , bu yüzden onu ilk olarak adlandırmamın nedeni, daha sonra Internet Explorer 9 düzeltmelerinin "üzerine yazmak" yerine "screen-ie9.css ' ' i .

Bunu yaparak, web sayfanızı bir Internet Explorer 9 tarayıcısında görüntülediğinizden "emin" olabilirsiniz ('emin' kelimesini tırnak işaretleri olmadan yazmak için VM'lerle test etmem gerekir). Internet Explorer 9'da test etme ve şekillendirme işlemini tamamladığınızda ve Internet Explorer 8 ile test etmek istediğinizde, bunu değiştirerek aynı numarayı kolayca yapabilirsiniz:

<link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" />

Bununla:

<link rel="stylesheet" href="path/css/screen-ie8.css" type="text/css" />

Bu nedenle, Microsoft açısından sadece bir KÜÇÜK rahatsızlık meselesi, ANCAK yeni F12 geliştiricilerinin araçları ÇOK şaşırtıcı özellik sunuyor, bu da bu kadar önemli değil.

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.