Koşullu yorum - Conditional comment

Koşullu yorumlar , Microsoft Internet Explorer sürüm 5 - 9 tarafından HTML kaynak kodunda yorumlanan koşullu ifadelerdir . Internet Explorer'ın bu sürümlerine kod sağlamak ve bunları gizlemek için kullanılabilirler. Koşullu yorumlar Internet Explorer 10 ve 11'de desteklenmez .

HTML'deki koşullu yorumlar ilk olarak Microsoft'un Internet Explorer 5 tarayıcısında göründü, ancak destek artık kullanımdan kaldırıldı. Internet Explorer 10'da, HTML koşullu yorumları, sayfa standartlar modundayken (belge modu 10) desteklenmez. JScript koşullu yorumları Internet Explorer 4'te tanıtıldı ve standartlar modunda veya uyumluluk modunda Internet Explorer 10'da desteklenmeye devam etti.

Örnekler

Koşullu yorumların nasıl çalıştığını gösteren basit bir örnek.

<!--[if IE 6]>
<p>You are using Internet Explorer 6.</p>
<![endif]-->

Sözdizimi

İki tür "koşullu yorum" vardır: alt düzey açıklanır ve alt düzey gizlenir .

Her bir açıklama türünün temel sözdizimi aşağıdaki tabloda gösterilmektedir. Gösterilen ilk yorum, karşılaştırma amacıyla ve her koşullu yorum türü tarafından kullanılan farklı sözdizimini göstermek için eklenen temel HTML Açıklamasıdır.

Yorum türü Sözdizimi veya olası değer
standart HTML yorumu <! - Yorum içeriği ->
alt düzey gizli <! - [if ifade ]> HTML <! [endif] ->
alt düzey ortaya çıktı <! [if ifade ]> HTML <! [endif]>

HTML koşullu yorumlar her sözdizimi blok içinde gösterilen kod dahil HTML içeriği bloku belirtir. Her iki koşullu yorum türü , yorum bloğunun içindeki içeriğin ayrıştırılması veya yok sayılması gerektiğini belirtmek için koşullu ifade kullanır. Koşullu ifade, özelliğe bağlı olarak bir özellik, işleç ve / veya değer kombinasyonundan oluşturulur. Aşağıdaki tablo desteklenen özellikleri gösterir ve her özelliğin desteklediği değerleri açıklar.

Öğe Misal Yorum Yap
IE [IE ise] "IE" dizesi , Web sayfasını görüntülemek için kullanılan Internet Explorer sürümüne karşılık gelen bir özelliktir .
değer [IE 7 ise] Tarayıcının sürümüne karşılık gelen bir tam sayı veya kayan nokta rakamı . Sürüm numarası tarayıcı sürümüyle eşleşirse Boolean değerini true olarak döndürür. Daha fazla bilgi için bkz. Sürüm vektörleri .
WindowsEdition [WindowsEdition ise] Windows 7'de Internet Explorer 8. "WindowsEdition" dizesi , Web sayfasını görüntülemek için kullanılan Microsoft Windows sürümüne karşılık gelen bir özelliktir .
değer [WindowsEdition 1 ise] Web sayfasını görüntülemek için kullanılan Windows sürümüne karşılık gelen bir tam sayı . Değer, kullanılan sürümle eşleşiyorsa, Boolean değerini true olarak döndürür. Desteklenen değerler ve açıkladıkları sürümler hakkında bilgi için GetProductInfo işlevinin pdwReturnedProductType parametresine bakın .
doğru [Eğer doğruysa] Her zaman doğru olarak değerlendirilir.
yanlış [yanlışsa] Her zaman yanlış olarak değerlendirilir.

Aşağıdaki tablo, koşullu ifadeler oluşturmak için kullanılabilecek operatörleri açıklamaktadır.

Öğe Misal Yorum Yap
! [eğer! IE] DEĞİL operatörü. Bu, ifadenin Boolean anlamını tersine çevirmek için özelliğin , işlecin veya alt ifadenin hemen önüne yerleştirilir .
lt [IE 5.5 ise] Küçüktür operatörü. İlk bağımsız değişken ikinci bağımsız değişkenden küçükse doğru döndürür.
lte [lte IE 6 ise] Küçüktür veya eşittir operatörü. İlk bağımsız değişken ikinci bağımsız değişkenden küçükse veya ona eşitse doğru döndürür.
gt [IE 5 ise] Büyüktür operatörü. İlk bağımsız değişken ikinci bağımsız değişkenden büyükse doğru döndürür.
gte [eğer gte IE 7] Büyüktür veya eşittir operatörü. İlk bağımsız değişken ikinci bağımsız değişkenden büyükse veya ona eşitse doğru döndürür.
() [eğer! (IE 7)] Alt ifade operatörleri. Daha karmaşık ifadeler oluşturmak için boole operatörleriyle birlikte kullanılır.
& [eğer (gt IE 5) & (lt IE 7)] AND operatörü. Tüm alt ifadeler doğru olarak değerlendirilirse doğru döndürür
| [eğer (IE 6) | (IE 7)] VEYA operatörü. Alt ifadelerden herhangi biri doğru olarak değerlendirilirse doğru döndürür.

Alt düzey gizli koşullu yorum

Aşağıda, "alt düzey gizli" koşullu yoruma ilişkin iki örnek verilmiştir:

<!--[if IE 8]>
<link href="ie8only.css" rel="stylesheet">
<![endif]-->

veya

<!--[if lte IE 7]>
<style type="text/css">
/* CSS here */
</style>
<![endif]-->

İlk örnekteki yönerge, IE 8'in belirtilen CSS dosyasını okumasına izin verirken, IE 7 veya daha eski IE sürümleri bunu göz ardı edecektir. IE dışındaki tarayıcılar da standart bir HTML yorumuna benzediği için bunu görmezden gelir. İkinci örnekteki etiket, IE 5.0 ile 7 arasındaki sürümlerin dahili CSS stilini okumasına izin verecektir. Bu etiketin farklı kullanımları ile IE 6, IE 5 veya IE'nin belirli bir sürümden daha yeni (daha büyük) veya daha eski (daha küçük) sürümlerini de seçebilirsiniz.

Alt düzey açıklanmış koşullu yorum

Aşağıda, yanıltıcı ada rağmen, varsayılan Microsoft sözdizimini kullanan bir (X) HTML yorumu olmayan "alt düzeyde ortaya çıkan" koşullu "yorum" örneği verilmiştir :

<![if !IE]>
<link href="non-ie.css" rel="stylesheet">
<![endif]>

Bu örnek, koşul IE'de "yanlış" olarak değerlendirilirken (ve dolayısıyla içerik yok sayılır), yalnızca IE olmayan tarayıcılarda etiketlerin kendileri tanınmazken (ve dolayısıyla göz ardı edilir) yalnızca IE olmayan tarayıcılarda gösterilmesi gereken içeriği gösterir. . Bu geçerli HTML veya XHTML değil.

Microsoft, bu sözdiziminin standartlaştırılmış işaretleme olmadığını kabul eder ve bu etiketlerin diğer tarayıcılar tarafından gözden kaçmasını ve ortadaki içeriği açığa çıkarmasını amaçlamaktadır. W3C standartlarına uyumu sağlamak için, bazı web geliştiricileri, alt düzey açıklanmış koşullu yorumlar için alternatif bir teknik kullanır:

<!--[if !IE]>-->
<link href="non-ie.css" rel="stylesheet">
<!--<![endif]-->

Yapısı biraz kafa karıştırıcı olsa da, bu özel sözdizimi geçerli (X) HTML'dir ve özellikle IE olmayan tarayıcılar için tasarlanmış koşullu bölümler için kullanışlıdır; koşul doğru olarak değerlendirilirse (örneğin, kod yazmak IE olmayan tarayıcılarda ve IE'nin bazı sürümlerinde görüntülenecekse), IE daha sonra HTML içeriğinden önce bulunan "->" öğesini görüntüler. Bu sorun, başına "<!" Ekleyerek kolayca çözülebilir. baştaki "->" kısmına aşağıdaki gibi:

<!--[if gt IE 6]><!-->
This code displays on non-IE browsers and on IE 7 or higher.
<!--<![endif]-->

Ekstra "<!" IE olmayan tarayıcılar tarafından yok sayılır; aynı zamanda koşuldan bağımsız olarak IE tarafından da yok sayılır, çünkü eğer false ise , koşullu yorum içindeki her şey göz ardı edilir ve eğer doğruysa , sonuçta ortaya çıkan etiket <!--> tanınmaz ve bu nedenle göz ardı edilir.

JScript'te koşullu yorumlar

Internet Explorer 4'ten başlayarak, koşullu derleme olarak bilinen JScript içinde koşullu yorumlar eklemek için benzer bir tescilli mekanizma bulunmaktadır .

Kod örnekleri:

<script>
/*@cc_on
  document.write("You are using IE4 or higher");
@*/
</script>

Birkaç önceden tanımlanmış değişken de vardı, ancak Microsoft, IE6'nın JScript motorunu XP SP3 ile değiştirdiği ve şimdi şu şekilde raporladığı için artık bunlara güvenilemez:

@_jscript_version == 5.7

Sonuç olarak, koşullu derlemeyi kullanarak Internet Explorer sürümünü tespit etmenin olası bir yolu aşağıda görülebilir:

<script>
/*@cc_on

  @if (@_jscript_version == 11)
    document.write("You are using IE11 with an older document mode");
  @elif (@_jscript_version == 10)
    document.write("You are using IE10");
  @elif (@_jscript_version == 9)
    document.write("You are using IE9");
  @elif (@_jscript_version == 5.8)
    document.write("You are using IE8");
  @elif (@_jscript_version == 5.7)
    document.write("You are using IE" + (!window.XMLHttpRequest ? 6 : 7));
  @elif (@_jscript_version == 5.6)
    document.write("You are using IE6");
  @elif (@_jscript_version == 5.5)
    document.write("You are using IE5.5");
  @elif (@_jscript_version < 5.5)
    document.write("You are using a version older than IE5.5");
  @else
    document.write("You are using an unknown version of IE");
  @end
 
@*/
</script>

Ancak, koşullu derleme artık Internet Explorer 11 Standartları modunda desteklenmemektedir .

Ayrıca bakınız

Dış bağlantılar

Referanslar