2011-05-24 18 views
7

¿Cuál es la verdadera razón por la que debemos escapar de una barra diagonal en una cadena de JavaScript, y también por qué debemos escapar cadena/sin cadena en XHTML. Muchos tutoriales solo abordan este tema.JavaScript y barras diagonales en cadenas

Respuesta

7

¿Cuál es la verdadera razón por la que hay que escapar de una barra inclinada en una cadena JavaScript

En un documento HTML 4, la secuencia </ dentro de un elemento se define como que contiene CDATA (como script) es una etiqueta final y terminará el elemento (con un error si no es </script>.

Por lo que se refiere JS / y \/ son idénticos dentro de una cadena. en lo que se refiere a HTML </ comienza una etiqueta final b ut <\/ no.

, y también por qué debemos escapar de la cadena/sin cadena en XHTML.

XHTML no proporciona un método para especificar que un elemento contiene intrínsecamente CDATA, por lo que necesita para manejar de forma explícita caracteres que de otro modo tienen un significado especial (<, &, etc). Envolverlos contiene del elemento con marcadores CDATA es la forma más fácil de lograr esto.

+0

Entonces, ¿nunca tenemos que escapar de una sola barra inclinada, solo una rubixibuc

+0

En otras palabras, en XHTML, ¿cuándo debemos escapar de una barra diagonal? – rubixibuc

+0

En XHTML "normal" (que nadie usa), nunca. En HTML compatible con XHTML (que utilizan todos los que quieren IE 8 y versiones inferiores), los mismos lugares que en HTML. – Quentin

3

No es necesario para escapar / en una cadena de JavaScript, simplemente \, porque si no lo hace, entonces la cadena yes\no inadvertidamente ser transformado en yes<newline>o. Escapar el \ evitará eso.

Además, si no escapa & en una URL, todo lo que venga después se considerará un nuevo parámetro. Por ejemplo, a=Q&A significará que "el parámetro a tiene el valor" Q "y también hay un parámetro A" en lugar de "el parámetro a tiene el valor" Q&A "". La forma correcta de escapar sería a=Q%26A.

+0

¿Por qué escribiría 'yes \ no' para el aviso? –

+0

@ Paŭlo, probablemente no, ese es el mejor ejemplo de uso no intencional que podría surgir. – rid

+1

nombres de archivos de Windows? –

0

La barra oblicua es necesaria para evitar que los navegadores, especialmente los más antiguos, interpreten erróneamente la barra inclinada como un marcador de cierre de JavaScript.

+2

No hay nada erróneo al respecto. – Quentin

Cuestiones relacionadas