2014-06-09 11 views
5

Sto cercando di analizzare un codice HTML per estrarre tutti i collegamenti in esso. Per evitare collegamenti non disponibili a rimuovere il codice commentato che inizia con <!-- e finisce con --> .Qui viene il problema: Nel codice HTML io possa trovare un po 'di codice JavaScript, ad esempio:HTML con codice JavaScript commentato

<html> 
<HEAD> 
<SCRIPT LANGUAGE="JavaScript"> 
<!-- Begin 
if (document.images) { 
    var pic2 = new Image(); // for the inactive image 
    pic2.src = "pic2.jpg"; 
    var title2 = new Image(); 
    title2.src = "title2.jpg"; 
    } 
... 
--> 

e la cosa strana è che il codice js è commentato ma funziona ancora. Quindi, se rimuovo quel codice, il risultato non sarà come previsto. Cosa devo fare per identificare quando sto affrontando un codice commentato inutilizzato e quando quel codice commentato è funzionante?

risposta

6

La cosa strana è che il codice js è commentato, ma funziona ancora

Quelli non sono i commenti. È solo la sintassi consentita all'interno degli elementi di script (e di stile) che seguono la sintassi dei commenti in modo che i browser che precedono lo script e lo stile non rendano il codice come testo.

Cosa devo fare per identificare quando sto affrontando con codice commentato inutilizzato e quando quel codice commentato è funzionante?

Scrivere un parser HTML reale, seguendo lo parsing specification e quindi rimuovere eventuali nodi di commento dal DOM generato.


Come sporca (ma possibilmente rapida) soluzione, si può solo ignorare i commenti all'interno di elementi contrassegnati come contenente CDATA nel HTML 4.01 DTD.

+0

Ok. Ora le cose sono chiare per me. Grazie infinite per la tua risposta. Cercherò la migliore strategia. –

0

La cosa strana è che il codice js è commentato, ma funziona ancora

Non c'è niente di strano su di esso. I commenti <!-- --> funzionano solo in HTML, non in JavaScript. Il tuo codice sopra funzionerà ancora poiché hai inserito questi commenti nei tag <script>. L'unica differenza che fa è che se l'utente ha disabilitato JavaScript sul suo browser, non vedrà il codice stampato sul browser (dato che HTML analizzerà quei commenti in assenza di JavaScript).

+1

Questo non risponde alla domanda (che riguarda l'identificazione di quali '' sono commenti e quali no). Hai anche torto, i browser che supportano JS ma che sono disabilitati (così come qualsiasi browser che non supporta JS scritto dal 1998 circa) non renderanno il testo all'interno degli script. Sono solo i browser che precedono l'aggiunta dello script all'HTML che lo farà. – Quentin

+0

Grazie per la tua risposta. –

-1

È necessario commentare l'intero blocco <script>. per esempio.

<!-- <script> 
     ...some javascript code... 
</script> --> 
+1

La domanda è come identificare le sequenze '' che sono commenti e quali no. Non sta chiedendo come commentare una sceneggiatura. – Quentin

+0

scusa, ho completamente perso quella parte. – pankaj

Problemi correlati