2011-08-22 22 views
10

Qualcuno può spiegare come funziona l'inizio e la fine dello script html5shim?javascript: cosa significa/* @ @ */significa?

lo script inizia con /*@ e finisce con @*/ come questo:

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

Qual è il /*@ @*/ facendo?

Mi aspetto che la sequenza/* */commenta tutte le righe tra di loro, ma dal momento che la sceneggiatura viene eseguita, non può essere il caso qui? Non ho capito bene.

trovato in:

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

risposta

14

JScript di IE supporta 'la compilazione condizionale', un trucco di nascondere del browser speciale -Informazioni specifiche nei commenti. L'idea è che /*@[email protected]*/ è una sequenza di caratteri così insolita che è sicuro riproporla per introdurre questa nuova funzionalità a livello di sintassi.

html5shiv lo usa per creare un pezzo di codice che non tenterà nemmeno di funzionare sulla maggior parte dei browser (che, come hai fatto tu, interpreterà tutto come un elogio), ma che ha un significato speciale per IE.

MS doc here. Nessun altro motore JS supporta questo. Tipicamente, si potrebbe preferire un codice di comportamento più esplicito, ma se si ha realmente bisogno di rilevare una caratteristica di IE che non si espone altrimenti allo sniffing, può essere utile.

+1

"Nessun altro motore JS supporta questo" ... non è questo il punto? ;) – Artfunkel

+1

@Artfunkel: beh, altri browser hanno rilevato altre estensioni del browser, quindi non è al di fuori delle possibilità che qualcun altro possa implementare alcune delle funzionalità di CC. Probabilmente non è una buona idea ora tutti la usano esclusivamente per rilevare IE, anche se ... – bobince