Twórcy Explorera, jakby przeczuwając, że obchodzenie jego bugów będzie koderską codziennością, umieścili w nim dwa ciekawe rozszerzenia.

Pierwsze, powszechnie znane, to Conditional Comments — komentarze HTML, które stają się kodem dla wybranych wersji IE.

Okazuje się, że nie tylko HTML, ale i JavaScript ma taką sztuczkę.

/*@cc_on @*/
/*@if (@_jscript_version < 5.6)
tutaj javascript tylko dla IE5
@end @*/

@cc_on uruchamia cały mechanizm, następnie @if czyni komentarz kodem. W tym trybie dostępne jest kilka specjalnych zmiennych, poprzedzonych @_.

Po co to?

Do ukrywania Explorerowego syfu przed normalnymi przeglądarkami. Rozwiązanie to jest nieomylne, w przeciwieństwie do głupot jak szukanie “MSIE” w User-Agent albo testowanie document.all.

Przykład

var IE/*@cc_on = @_jscript_version@*/;

Normalne przeglądarki zinterpretują jako:

var IE;

a IE7 “zobaczy”:

var IE = 5.7;

(każda wersja IE ma swoją, inną wersję jscript)

Dlaczego nie <!--[if IE]-->?

Główną zaletą komentarzy warunkowych w JS jest pozbycie się dodatkowego kodu z każdego pliku HTML i możliwość przerzucenia hacków do jednego pliku JS, gdy się go używa na całej stronie. Można też dodać więcej logiki i zrobić bardziej wyrafinowane hacki niż za pomocą komentarzy HTML.

Po dalsze szczegóły odsyłam do MSDN albo do Deana Edwardsa.