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.