2011-11-08 24 views
23

Mi piace solo chiedere cosa dice il titolo. La seguente stringa è necessaria nei tag di script HTML?JavaScript <!-- //--> sono obbligatori?

<!-- 
//--> 

Se non li uso cosa accadrebbe?

+3

Qualcuno può spiegarmi perché questa domanda ha già ottenuto 6 upvotes? È una domanda alla quale si può rispondere semplicemente digitando il titolo su Google, ergo: senza sforzo. – CodeCaster

+18

@CodeCaster: l'unica cosa che dovrebbe avere importanza è che una domanda sia ben fatta e non sia un duplicato. A lungo termine, SO può essere un riferimento molto migliore di Google. (E questo non conta quanto sia pessimo Google ai simboli di indicizzazione e agli operatori bizzarri) – hugomg

+9

Posso votare a favore di un commento? (Digitando ['JavaScript sono richiesti?'] (Http: // www.google.com/search?q=JavaScript+%3C!--+%2F%2F--%3E+are+required%3F) in Google è _non_ molto utile.) –

risposta

34

A meno che non si scelgano browser che precedono l'elemento <script> (ad esempio Netscape 1 e amici). (Suggerimento: non lo sei).

Se non li usi, e un browser così vecchio (così vecchio da non riuscire nemmeno a far fronte all'intestazione dell'host HTTP che è necessario per i siti che usano host virtuali) prova ad accedere al sito, quindi al contenuto dell'elemento <script> verranno considerati come testo da visualizzare.

Ulteriori approfondimenti: Comments and CDATA: The mysterious history of script and style in HTML

+15

Non direi "suggerimento: non lo sei", ma più come "suggerimento: se lo sei, lo stai facendo male" – Romain

+0

Álvaro solleva un punto importante nella sua risposta tuttavia: senza gli escape CDATA, la pagina non è più un XML valido se un carattere meta come '<' è contenuto nello script. Penso che basarsi su applicazioni che risolvono in silenzio i dati non validi sia di cattivo gusto. –

+1

@Simon Richter - La domanda riguarda l'HTML, non XHTML. È anche specificamente sull'uso dei commenti attorno al blocco di script. (E il problema XHTML * è * menzionato nel collegamento che fornisco per ulteriori letture) – Quentin

3

Se non vengono utilizzati, un browser da forza visualizzazione primi anni 90 del codice sorgente JS invece di eseguirlo.

3

No, non sono richiesti. Questa abitudine è necessaria per supportare browser molto vecchi ed è leggermente correlata all'inserimento di tag CDATA che dovrebbero essere inclusi a scopo di validazione. Nessuno dei due è richiesto, ma serve o ha servito il loro scopo, come risulta da alcune delle risposte più elaborate.

See: When is a CDATA section necessary within a script tag?

+5

I marcatori CDATA non hanno nulla a che fare con "browser veramente vecchi", sono per i browser che analizzano XHTML con un parser XML (cioè correttamente). I commenti non hanno nulla a che vedere con la convalida (eccetto per caso se vengono utilizzati in modo errato in XHTML). – Quentin

+0

Ho riformulato per rendere più chiaro cosa intendevo, ma ovviamente hai perfettamente ragione. – Pieter

+0

@Quentin Non penso che ci sia qualcosa che in realtà proibisca formalmente di includere il contenuto come contenuto di testo - è solo che quindi ti viene richiesto di sfuggire ad ogni entità maggiore/minore di/e commerciale come entità html. usare CDATA significa che devi solo occuparti della sequenza di caratteri non comuni ']]>' (che potresti fare semplicemente includendo uno spazio tra due dei token) – Random832

1

Google "perché come commento javascript in html", primo colpo:

http://www.howtocreate.co.uk/tutorials/javascript/incorporate

Questo non è più necessario. Tutti i browser attuali sono a conoscenza dei tag script e di come trattano i loro contenuti, dal momento che fanno parte dell'HTML da HTML 3. I browser che non comprendono l'HTML 3 o gli script (praticamente mai usati ora) mostreranno lo script come se era il contenuto della pagina. Puoi nascondere lo script da loro commentando il tuo script con commenti HTML standard.

1

99% del tempo, non sono più necessari :) A meno che il vostro uso di alcuni veramente vecchio browser!

8

La cosa peggiore che può accadere è che la pagina viene recuperata da un agente utente che non è a conoscenza del tag <script> e tenta di analizzare il blocco di script come normale HTML. Il codice JavaScript verrà gestito come testo normale e i simboli < potrebbero interferire con il markup della pagina. Un esempio di forzata:

<script type="text/javascript"> 
if(a<del || a>b){ 
    foo(); 
} 
</script> 
Lorem ipsum dolor sit amet. 

... potrebbe rendere brutto testo eliminato:

se (ab) {foo(); } Lorem ipsum dolor sit amet.

Esistono questi agenti utente obsoleti? Oh, certo che lo fanno. Nota che ho evitato accuratamente la parola "browser". La domanda non è chi sta usando Mosaic al giorno d'oggi. È che un tuo sito può essere letto da un parser basato su espressioni regolari basato su PHP male scritto.

Se ti interessa?Beh, probabilmente no :)

+0

Questo comportamento non è ancora obsoleto. –

+1

@Simon Richter - Sì, lo è. Il comportamento si verifica quando un browser non riconosce un elemento '' dal termine dello script (mid-JS-string). – Quentin

+0

Credo che la sequenza di caratteri '

+0

@DanielPryden, non importa in ogni caso, la specifica [html5] (http://dev.w3.org/html5/spec/syntax.html#comments) specifica che un commento non può contenere due segni meno negativi consecutivi ('- -'), che dovrebbe essere una grande bandiera rossa come un motivo * non * per usare un commento attorno a JavaScript. – zzzzBov

0

Commentando il codice JavaScript in questo modo si può anche impedire il contenuto dell'indicizzazione nei motori di ricerca e potrebbe essere auspicabile in alcuni casi.

Ad esempio, qualche tempo fa ho trovato un sacco di problemi relativi alla "pagina non trovata" negli strumenti per i webmaster di Google. Dopo una semplice analisi degli URL, ho eliminato che Google ottiene tutte le variabili del percorso dal mio codice JS (come "nome/001"), le ha unite con l'url corrente (mysite.info/staff) e ho provato a richiedere il risultato url. Senza successo, ovviamente.

Dopo aver inserito <!-- //--> in alcuni blocchi JS, tutti i problemi relativi alla "pagina non trovata" sono scomparsi nel giro di pochi mesi.

Problemi correlati