Quale è meglio: <script type = "text / javascript">… </script> o <script>… </script>


97

Quale è meglio o più comodo da usare:

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

o

<script>...</script>

7
Se stai usando javascript come lingua, ovviamente il primo è meglio
Chinmayee G

Immagino che il guadagno di prestazioni che ottieni dichiarando lo script come java-script sia insignificante, ma ottima domanda!
The_Butcher

10
La risposta "corretta" è diversa se siamo in Html v4 e Html v5?
Dimitrios Mistriotis

Non si tratta di quale sia il migliore, ma quando usare cosa; quando si utilizza la dichiarazione HTML5 <!doctype html>, non è necessario utilizzare il suggerimento di tipo MIME type="text/javascript"su un <script>tag poiché si applica per impostazione predefinita. D'altra parte (non HTML5), è consigliabile e consigliato (con riferimento al suggerimento di tipo MIME type="text/javascript").
nyedidikeke

Risposte:


137

Hai bisogno di un attributo di tipo? Se stai usando HTML5, no. Altrimenti sì. HTML 4.01 e XHTML 1.0 specificano l' typeattributo come richiesto mentre HTML5 lo ha come opzionale, per impostazione predefinita text/javascript. HTML5 è ora ampiamente implementato, quindi se utilizzi il doctype HTML5, <script>...</script>è valido e rappresenta una buona scelta.

Per quanto riguarda ciò che dovrebbe andare nell'attributo type, il tipo MIME application/javascriptregistrato nel 2006 è destinato a sostituire text/javascripted è supportato dalle versioni attuali di tutti i principali browser (incluso Internet Explorer 9). Una citazione dalla RFC pertinente :

Questo documento definisce quindi text / javascript e text / ecmascript ma li contrassegna come "obsoleti". L'utilizzo di tipi di media sperimentali e non registrati, come elencato in parte sopra, è sconsigliato. I tipi di media,

  * application/javascript
  * application/ecmascript

che sono anche definiti in questo documento, sono destinati ad un uso comune e dovrebbero invece essere usati.

Tuttavia, IE fino alla versione 8 inclusa non esegue lo script all'interno di un <script>elemento con un typeattributo di application/javascripto application/ecmascript, quindi se hai bisogno di supportare il vecchio IE, sei bloccato con text/javascript.


3
Non "hai bisogno" typedell'attributo. La convalida rispetto a HTML4.01 o XHTML 1.0 non è ciò che dovresti fare comunque e tutti i browser supporteranno il tuo tag senzatext/javascript
Ian Storm Taylor

9
@Ian: Al momento in cui scrivo, la specifica HTML5 era una bozza funzionante e non si era ancora trasformata nel suo stato attuale di target in continuo movimento. Le implementazioni del browser di HTML5 erano molto indietro rispetto a dove sono ora. Considerando questo, penso che all'epoca HTML5 non fosse utilizzabile per il web generale e la mia risposta è stata assolutamente corretta, e ha sempre riportato la dichiarazione di non responsabilità "se vuoi che il tuo HTML sia valido" . Sarei d'accordo sul fatto che le cose sono 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 ora sempre la cosa sbagliata da fare.
Tim Down

1
+1, ho appena scoperto questa domanda da uno stupido. Mi ricorda diversi post sul blog di Anne Van Kesteren, incluso il tipo JavaScript MIME , dove ne discute. Non riesco a trovarlo, ma ero sicuro che ci fosse un post in cui consigliava di non utilizzarlo typeaffatto perché funziona in tutti i browser. Forse era qualcun altro.
Andy E

1
Volevo solo dire "grazie" mentre stavo cercando di capire perché un file JS "application / javascript" non veniva eseguito su IE8 e sotto!
andrewtweber

che dire di: "text / javascript; version = 1.8"?
SparK

10

Entrambi funzioneranno ma lo standard xhtml richiede di specificare typeanche:

<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 del contenuto dell'elemento e sovrascrive il linguaggio di scripting predefinito. Il linguaggio di scripting è specificato come tipo di contenuto (ad esempio, "testo / javascript"). Gli autori devono fornire un valore per questo attributo. Non esiste un valore predefinito per questo attributo.

Nota l'enfasi sopra.

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

Nota: a partire da HTML5 (lontano), l' typeattributo non è obbligatorio ed è predefinito.


9

Devi usare a <script type="text/javascript"> </script>meno che tu non stia usando html5. In tal caso, sei incoraggiato a preferire <script> ... </script>(perché l'attributo type è specificato per impostazione predefinita su quel valore)


5

Questo è tutto ciò che serve:

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

3

<script type="text/javascript"></script> perché è il modo giusto e compatibile con tutti i browser


-2

Con l'ultimo Firefox, devo usare:

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

Oppure lo script potrebbe non funzionare correttamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.