2011-08-22 9 views
10

Czy ktoś może wyjaśnić, jak działa początek i koniec skryptu html5shim?javascript: co znaczy/* @ @ * /?

skrypt zaczyna się i kończy /*@ z @*/ jak ten:

/*@cc_on(function(a,b){function ........ (this,document);@*/ 

Co jest /*@ @*/ robi?

Spodziewam się, że sekwencja/* */skomentuje wszystkie linie pomiędzy nimi, ale skoro skrypt się wykonuje, to nie może być tutaj? Jestem zmieszany.

znaleźć na stronie:

http://html5shim.googlecode.com/svn/trunk/html5.js

Odpowiedz

14

JScript IE obsługuje 'kompilacja warunkowa', trick ukrywania specjalną przeglądarkę -szczegółowe informacje w komentarzach. Pomysł polega na tym, że /*@[email protected]*/ jest tak niezwykłą sekwencją znaków, że można bezpiecznie zmienić jej przeznaczenie, aby wprowadzić nową funkcję składni.

html5shiv używa go do stworzenia fragmentu kodu, który nawet nie będzie próbował uruchomić się na większości przeglądarek (co, tak jak ty zrobiłeś, zinterpretuje całość jako pochwałę), ale który ma szczególne znaczenie dla IE.

MS doc here. Żaden inny silnik JS tego nie obsługuje. Zazwyczaj można zamiast tego preferować bardziej jawny kod wykrywający zachowanie, ale jeśli naprawdę trzeba wykryć funkcję IE, która nie narazi się na węszenie, może być przydatna.

+1

"Żaden inny silnik JS tego nie obsługuje" ... czy nie o to chodzi? ;) – Artfunkel

+1

@Artfunkel: Cóż, inne przeglądarki pobrały inne rozszerzenia przeglądarki, więc nie jest poza sferą możliwości, że ktoś inny może wdrożyć niektóre funkcje CC. Prawdopodobnie nie jest to dobry pomysł, teraz każdy używa go wyłącznie do wykrywania IE, choć ... – bobince