Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

203
Views
¿Error de cotización de HTML/JavaScript en todos los principales navegadores?

Suponga que desea mostrar una alerta con el contenido de cadena de <!-- Comment --> <script type="text/javascript"></script> en JavaScript en una página HTML. Puedes hacerlo con el siguiente código:

 <!DOCTYPE html> <html> <head> <title>Quoting</title> </head> <body> <script type="text/javascript"> alert('<!-- Comment --> <script type="text/javascript"></script\u003E'); </script> </body> </html>

Nótese aquí el carácter > citado en la parte </script> del texto. Esto utiliza un escape Unicode de JavaScript para evitar que el analizador HTML interprete esta parte del literal de la cadena como el final de la etiqueta del script. El código anterior funciona perfectamente en FF, Chrome, IE.

Ahora intente aplicar las comillas > también al final del comentario dentro de la cadena literal. Esto no debería cambiar nada, porque la sintaxis de comentarios XML no debe interpretarse dentro de las etiquetas de script en HTML (y obviamente no se interpreta, porque la sintaxis de comentarios se mostró en la alerta):

 <!DOCTYPE html> <html> <head> <title>Quoting</title> </head> <body> <script type="text/javascript"> alert('<!-- Comment --\u003E <script type="text/javascript"></script\u003E'); </script> </body> </html>

Curiosamente, este código se rompe: la alerta no se imprime cuando se carga la página. El problema se puede reproducir al menos en FF, Chrome e IE. ¿Me estoy perdiendo algo en las especificaciones, o es un error "independiente del navegador" en el analizador HTML de todos los principales navegadores?

El inspector DOM muestra lo siguiente:

ingrese la descripción de la imagen aquí

Parece que el resto del documento se interpreta como parte del script en este caso.

¿Algunas ideas?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Esto no es un error.

El primer < pone el analizador en datos de Script con un estado de signo menor que el ! lo pone en estado de inicio de escape de datos de secuencia de comandos y así sucesivamente.

Reemplazar el > que terminó el comentario HTML con una secuencia de escape significa que no sale del estado "lidiando con un comentario" hasta que llega al final del documento HTML.


Es un artefacto histórico del código HTML inicial utilizado para permitir scripts en línea sin que el código fuente de JS apareciera en la página para navegadores que no admitían el elemento <script> .

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!