2015-02-01 17 views
10

Ho provato alcuni trucchi in javascript e ho riscontrato un problema ridicolo: Non riesco a utilizzare <script> come sottostringa in una stringa javascript! Ecco un esempio:Come inserire "</script>" in una stringa javascript?

<html> 
    <head> 
     <script> 
      alert("<script></script>"); 
     </script> 
    </head> 
</html> 

Si suppone di stampare <script></script>, ma, invece, ottengo questo:

"); 

stampato sulla pagina, in formato HTML.

Domanda: Come posso usare <script> seguita da </script> sottostringhe, in una stringa, in Javascript, qualsiasi perché è agisce in quel modo?

Ecco JSFiddle di esso :)

risposta

15

Quello che ti sta facendo è il </script>. Il parser HTML non riconosce le stringhe di Javascript o i tag nidificati <script>, quindi lo interpreta come tag di chiusura per l'iniziale <script>. Cioè, questa parte del documento viene analizzato come:

<script>    (open tag) 
    alert("<script>  (text node - contents of the script) 
</script>    (close tag) 
");      (text node - plain text) 

Il secondo </script> viene ignorato, in quanto non c'è altra <script> tag per farlo chiudere.

Per risolvere il problema, suddividere </script in modo che il parser HTML non lo veda. Per esempio:

alert("<script><\/script>"); 

o:

alert("<script><" + "/script>"); 

o semplicemente mettere il codice in un file JavaScript esterno. Questo problema si verifica solo per gli script inline.

1

è a causa del \ credo. Non ho una spiegazione concreta dato che sono un novizio di Javascript, ma questo codice dovrebbe funzionare:

alert("<script><\/script>"); 

si avvicinò con esso usando la conoscenza di Java .. Haha dal momento che la \ è una chiave di fuga in molte lingue.

Problemi correlati