IE6 HTML Besleme Sadece

7 Cevap php

Ben tarayıcı IE6/IE7 ise farklı HTML görüntülemek gerekir. Ben sadece bilgi şekillendirme bahsediyoruz eğer koşullu yorumlar iyi çalışıyor biliyorum ama bu özel durumda o gerçek biçimlendirme bulunuyor.

Ben png-24 olacak görüntülerin sırasız bir liste vardır. Bunlar yuvarlak köşelere sahip olacak (png-24 tarafından sağlanan şeffaflık dolayısıyla ihtiyaç) ve CSS yuvarlak sınır stil olacak (3). IE6 png-24 bulunuyor tanıma ile değil zaten sınırların görüntüde dahil olması jpg adlı görüntülerin alternatif bir liste istiyorum. Bu standartlar iken uyumlu tarayıcılar uygun sürümü alacak IE6/IE7 mutlu edecek.

Site potansiyel birçok görüntü büyüyecek ve kolayca temalı gerekiyor çünkü (ben bu şekilde yapıyorum. Ben kodu sınır-renk için basit bir değişiklik sınırları üretmek ve geniş siteyi değiştirirse. IE hala olacak gerçekleştirmek manuel olmak zorunda ama onlar gerçekten IE6 tarafından desteklenen istiyorsanız ben bunun için ayrı bir ücret oluşturabilirsiniz.)

Yani benim soru PHP kullanarak bunu yapmanın en iyi yolu nedir ve kötü yanları var mı?

7 Cevap

PHP bunu tespit ve farklı HTML gönderebilirsiniz:

$using_ie6 = ((strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.') !== FALSE) || (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6,0') !== FALSE));
if ($using_ie6) {
    ...
}
else {
    ...
}

Bu yöntemin olumsuz yanları görünüşte Opera bazen MSIE 6 kullanıcı aracısı başlıklar bulunuyor gönderir ve bu da IE cep maç olabilir vardır.

Farklı tarayıcılar için farklı içerik gönderme genellikle mümkün olduğunca kaçınmak için iyi bir şeydir - sen getiren tüm doğal kötülükleri ile yinelenen kod sürü ile sonuna kadar.

Koşullu yorum kullanın - bilgi şekillendirme ile değil, sadece, işaretleme ile mükemmel çalışır:

<!--[if lte IE 6]>
<p>Old school</p>
<![endif]-->

MSDN Bkz: About Conditional Comments

Sen $_SERVER['HTTP_USER_AGENT'] bakarak Tarayıcı UA alabilirsiniz

Here IE için UA dizeleri bir listesidir.

kötü yanları var mı?

Oh evet, çok. Sen 'Vary' çıktı a zorunda sayfa cacheing etkinliğini öldürür her UA dize için farklı olacağını vekiller / önbelleklerini anlatmak için başlık. (Bunu yapmazsanız, tarayıcılar. Yanlış işaretleme ile sayfalarını göreceksiniz) Ve tabii ki birçok tarayıcı sadece ne hakkında yalan. Mümkünse ben de koklamaya UA önlemek - ve neredeyse her zaman mümkündür.

Koşullu yorumlar basit biçimlendirme ile IE sunma özel durum için çok daha iyi. Her yerde HTML kullanabilirsiniz, ancak alt düzey-ortaya biçimlendirme için MS-önerilen sözdizimi geçersiz olduğuna dikkat edebilirsiniz. IE6 bir şey hedefleme için yerine sadece deneyin:

<!--[if lt IE 7]>
    (markup for IE6)
<![endif]-->

<!--[if gte IE 7]><!-->
    (markup for everyone else)
<!--<![endif]-->

IE6 png-24 bulunuyor tanıma ile değil zaten sınırların görüntüde dahil olması jpg adlı görüntülerin alternatif bir liste istiyorum.

Eğer IE6 şeffaflık çalışması için birçok PNG fixes birini denediniz mi? Bu çok daha kolay (ve daha iyi bakmak) ayrı görüntüleri ve biçimlendirme olan daha olacaktır.

Çok PHP mümkün olmalıdır Sadece farklı bir öneri. ASP.NET, geri istemciye ikili veri her türlü geri göndermek mümkün olacaktır özel işleyicileri yazabilirsiniz. Bunun yerine sayfaları yeniden yazmak, özel bir görüntü işleyicisi görüntü etiketleri bağlayabilirsiniz. Bu işleyici, isteğini almak tarayıcı sürümünü tespit etmek ve IE6 durumunda, bir JPG dosyası PNG dönüştürmek ve geri akışı olacağını istemciden kullanıcı aracısı dizesini kontrol olur. Diğer durumlarda, sadece PNG dosyasını dönecekti.

URL sonra biraz http://example.org/yourpage.php?yourimage gibi görünecektir

Temel olarak, sorunun kaynağına daha yakın sorunu gidermekle olacaktır. Ve önceden tespit IE6 açıklanmıştır.

Ben bu ne istedi olmadığını biliyorum, ama ben yine de vuracak.

IE 6 için 8 bit PNG-görüntüleri kullanın. Otelde 24-bit olanlar gibi aynı görünmüyor, ama bu ekstra biçimlendirme oluşturmanın arka plan görüntüsü yerine bir satır ile sadece bir ekstra stil Seni kurtaracağım.

Eğer hatalı bir tarayıcı için özel biçimlendirme oluşturarak değil, zaman biraz kazanmak, ve sonuç ne istediğinizi oldukça yakın - Şu anda saydam PNG yerine opak JPEG'leri kullanabilirsiniz özellikle.

Bir gerçekten yapmam rağmen (maalesef) bu konuda kendi seçim yapmak her zaman mümkün değil biliyorum, IE6 için çok güzel olmamalıdır.

Aşağıdaki etkisi javascript, bir kütüphane gibi bir şey kullanarak herhangi bir olasılığı var mı:

<!--[if ie]>
 // remove the #for_non_id_browsers and replace, using an ajax call or whatever, with an IE-suitable version
<![endif]-->

<div id="for_non_ie_browsers">
Page content
</div>