2010-11-22 22 views
60

Quale è migliore o più comodo da usare:Che è meglio: <script type = "text/javascript"> ...</script> o <script> ...</script>

<script type="text/javascript">...</script> 

o

<script>...</script> 
+5

Se si utilizza javascript come lingua, ovviamente il primo è il migliore –

+0

Sto indovinando il guadagno di prestazioni ottenuto dal dichiarare lo script come java-script è insignificante, ma ottima domanda! –

+8

La risposta "corretta" è diversa se si utilizza Html v4 e Html v5? –

risposta

96

Avete bisogno di un attributo del tipo a tutti? Se utilizzi HTML5, no. Altrimenti, sì. HTML 4.01 e XHTML 1.0 specifica l'attributo type come richiesto mentre HTML5 lo ha come facoltativo, con valore predefinito a text/javascript. HTML5 è ora ampiamente implementato, quindi se si utilizza il doctype HTML5, <script>...</script> è valido e una buona scelta.

Per quanto riguarda l'attributo type, il tipo MIME application/javascript registrato nel 2006 è destinato a sostituire text/javascript ed è supportato dalle versioni correnti di tutti i principali browser (incluso Internet Explorer 9). Una citazione da the relevant RFC:

Questo documento definisce così text/javascript e testo/ECMAScript, ma li contrassegna come "obsoleti". L'uso di tipi di media sperimentali e non registrati, come elencato nella parte precedente, è sconsigliato. I tipi di file,

* application/javascript 
    * application/ecmascript 

che sono anche definiti in questo documento, sono destinati all'uso comune e devono essere utilizzati al suo posto.

Tuttavia, IE fino ae includendo la versione 8 non esegue lo script all'interno di un elemento con un attributo <script>type di una application/javascript o application/ecmascript, quindi se avete bisogno di sostenere vecchio IE, sei bloccato con text/javascript.

+2

Non hai "bisogno" dell'attributo 'type'. Convalidare contro HTML4.01 o XHTML 1.0 non è più quello che dovresti fare in ogni caso, e tutti i browser supporteranno il tuo tag senza 'text/javascript' –

+8

@Ian: Al momento della stesura, la specifica HTML5 era una bozza funzionante e aveva non ancora trasformato nel suo stato attuale di bersaglio in perpetuo movimento. Le implementazioni del browser di HTML5 erano un notevole passo indietro rispetto a dove si trovano ora. Considerando questo, penso che HTML5 all'epoca non fosse utilizzabile sul Web generale e la mia risposta era assolutamente giusta e portavo sempre la dichiarazione di non responsabilità * "se vuoi che il tuo codice HTML sia valido" *. Sono d'accordo sul fatto che le cose siano andate avanti e questa risposta potrebbe fare con la revisione, ma non sono d'accordo sul fatto che scrivere pagine web in HTML 4.01 sia sempre la cosa sbagliata da fare. –

+1

+1, ho appena scoperto questa domanda da un dupe. Mi ricorda [diversi post] (http://www.google.co.uk/search?rlz=1C1SVEA_enGB358GB358&gcx=c&sourceid=chrome&ie=UTF-8&q=anne+van+kesteren+script+type) sul blog di Anne Van Kesteren , incluso [tipo MIME JavaScript] (http://annevankesteren.nl/2005/02/javascript-mime-type), di cui discute questo. Non riesco a trovarlo, ma ero sicuro che ci fosse un post in cui raccomandava di non usare 'type' perché funziona su tutti i browser. Forse era qualcun altro. –

9

Entrambi funzioneranno ma standard XHTML richiede di specificare il type troppo:

<script type="text/javascript">..</script> 

<!ELEMENT SCRIPT - - %Script;   -- script statements --> 
<!ATTLIST SCRIPT 
    charset  %Charset;  #IMPLIED -- char encoding of linked resource -- 
    type  %ContentType; #REQUIRED -- content type of script language -- 
    src   %URI;   #IMPLIED -- URI for an external script -- 
    defer  (defer)  #IMPLIED -- UA may defer execution of script -- 
    > 

type = content-type [CI] Questo attributo specifica il linguaggio di scripting di contenuto dell'elemento e sovrascrive il linguaggio di script predefinito . La lingua dello script viene specificata come tipo di contenuto (ad es. "Testo/javascript"). Gli autori devono fornire un valore per questo attributo . Non esiste alcun valore predefinito per questo attributo.

Rileva l'enfasi sopra.

http://www.w3.org/TR/html4/interact/scripts.html

Nota: Come di HTML5 (lontano), l'attributo type non è richiesto ed è di default.

6

È necessario utilizzare <script type="text/javascript"> </script> a meno che non si utilizzi html5. In questo caso si consiglia di preferire <script> ... </script> (perché attributo type è specificato per impostazione predefinita per tale valore)

2

<script type="text/javascript"></script> perché è la strada giusta e compatibile con tutti i browser

3

Questo è tutto ciò che è necessario:

<!doctype html> 
<script src="/path.js"></script> 
0

Con l'ultima Firefox, devo usare:

<script type="text/javascript">...</script> 

Oppure lo script potrebbe non funzionare correttamente.