2008-10-15 25 views
65

En el pasado, las personas solían envolver etiquetas de comentarios HTML alrededor de bloques de JavaScript para evitar que los navegadores "antiguos" mostraran el script. Incluso Lynx es lo suficientemente inteligente como para ignorar JavaScript, entonces ¿por qué algunas personas siguen haciendo esto? ¿Hay alguna razón válida en estos días?¿Tiene sentido usar comentarios HTML en bloques de JavaScript?

<script type="text/javascript"> 
<!-- 
//some js code 
//--> 
</script> 

Editar: Hay UNA situación que encontré. Algunos editores de código, como Dreamweaver, se confunden con el HTML entre comillas dentro de una cadena de JavaScript cuando están en "vista de diseño" y tratan de mostrarlo como parte de su página.

+4

supongo esto tiene algo que ver con el experimento de "monos/banana/escalera/agua pulverizada" de Ken Keyes, Jr. La gente sigue haciéndolo porque solo lo ven de esa manera, pero nunca preguntan por qué. –

+0

'->' debería ser '// ->'. –

Respuesta

71

No, absolutamente no. Cualquier agente de usuario, araña de motor de búsqueda o absolutamente cualquier cosa en estos días es lo suficientemente inteligente como para ignorar Javascript si no puede ejecutarlo.

No fue sólo un breve período en que esto era en absoluto servicial, y fue alrededor de 1996.

+6

LOL - ¡Culpable! Pero entonces, aprendí a hacer esto en 1996 y nadie ha dicho nunca diferente ... –

+0

Creo que he leído que está en desuso, pero no puedo encontrar el enlace. – some

19

No hay una buena razón para hacer esto más, como los navegadores, que se requieren esto que por lo general desapareció de la web.

De hecho, hacer realidad esto puede causar problemas no deseados de los intentos de algunos navegadores antiguos para interpretar la página si utiliza XHTML - desde developer.mozilla.org:

  • Mozilla 1.1 +/Opera 7

    No aplique CSS o ejecute JavaScript.

  • 7.0x Netscape/Mozilla 1.0.x

    No aplicar CSS, pero hace ejecutar el código JavaScript.

  • Internet Explorer 5.5 o superior

    no puede mostrar el documento.

Ese sitio también tiene enlaces a ejemplos de la severalproblems mencionado anteriormente.

14

Debe utilizar CDATA aunque ...

<script type="text/javascript" charset="utf-8"> 
/* <![CDATA[ */ 

/* ]]> */ 
</script> 

Porque si tienes '<', '>', '&', etc en su código, el código no valida :)

+11

SI desea cumplir con XHTML, de lo contrario no es necesario. –

+4

Si realmente desea usar Javascript en documentos XML bien formados, colóquelo en un archivo .js externo. Por ejemplo, las aplicaciones Mozilla XUL lo requieren. – MarkR

+0

heh, la respuesta fue para las secuencias de comandos del documento. Por supuesto, recomiendo poner todos los css y jss en archivos externos :) –

1

No tener que usar los bloques CDATA es una de las razones por las que prefieren utilizar HTML 4.01 Strict como mi docttype, pero, Staicu, pensé que utiliza la siguiente sintaxis:

<script charset="utf-8"> 
//<![CDATA[ 

//]]> 
</script> 

Tal t los dos son equivalentes? Alguien sabe si hay una ventaja para uno sobre el otro?

+0

// es un comentario de línea,/* */es un comentario en bloque. Puede usar cualquiera de los dos, para el javascript es el mismo (se comenta). Pero olvidó establecer el tipo = "texto/javascript" – some

+1

tipo = "texto/javascript" es ignorado por los navegadores a favor del tipo MIME enviado por el servidor. Su omisión fue intencional. –

+1

Andrew: No entiendo. Este es un script incrustado en el documento HTML, entonces, ¿de dónde viene el 'text/javascript'? Además, no creo que deba usar el atributo 'charset' si no hay ningún atributo' src', ya que el atributo 'charset' especifica el conjunto de caracteres del archivo vinculado al uso del atributo' src'. –

11

Infierno no, nadie necesita esto nunca más y si lo hace, tiene algunos problemas más que preocuparse. Cuando realmente quieres apoyar navegadores que lo necesitan, debes tener cuidado con muchas más cosas. ¡Ni siquiera estamos hablando de la falta de CSS!

Sin embargo, el problema más grande es que la gente hace esto mal.En realidad, su ejemplo es incorrecto, porque la línea

--> 

debe leer

//--> 

en segundo lugar, que dice tipo de atributo "text/javascript" lo que está mal también. Ha sido "texto/javascript" (todo en minúsculas) pero esto está obsoleto (ver IANA List) y ahora debería ser "aplicación/javascript" (ver another IANA List. Sin embargo, Douglas Crockford, el JS Guru, dijo que simplemente debes irte fuera

Otro problema que nadie ha mencionado ya es la siguiente:.. Dentro de los comentarios HTML, "-" no está permitido y eso significa que no puede utilizar "x--" para disminuir x por uno

+0

Tiene razón. Impide que Javascript ejecute el -> – jezzipin

Cuestiones relacionadas