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.
