¿Netscape 6?

Hola Bruckner! Hasta ahora había programado sin problemas en JavaScript para ambos navegadores (crossbrowser), pero desde que ha salido el Netscape6 me estoy volviendo loco: ninguna de mis páginas funciona. ¿Ha cambiado mucho? ¿A qué se debe? ¿Dónde puedo encontrar información para seguir programando crossbrowser?
Muchas gracias.
1

1 Respuesta

28.975 pts.
El problema fundamental radica en que Netscape 6 (o su versión "libre", Mozilla) cumple con los estándares del W3C, uno a uno. ¿Qué implicaciones tiene eso?
Aparte de que el soporte de CSS (1 y 2) es excelente, y que el Javascript es la versión más avanzada disponible, resulta que también hay un estándar para el DOM (y también está dividido en niveles, como CSS). Aquí están los problemas.
El DOM estándar no contiene objetos como document. All (naturalmente, eso es un invento de Microsoft), pero TAMPOCO document. Layers. Para detectar a un cliente Netscape se solía recurrir a la detección de este objeto:
if (document.layers) { ... código para Netscape ... }
Ese código, ejecutado en NS6, no hará nada. Por contra, si haces DHTML, detectas el navegador a través de navigator. AppName (o algo parecido) y supones que, como "estás en Netscape", puedes manipular layers... Pues tampoco funciona (ahora sí, con errores Javascript que pueden verse en la consola correspondiente). De hecho, el HTML de Mozilla es "el estándar", ni más ni menos. Ni LAYERs, ni ILAYERs, pero tampoco MARQUEEs u otros tags propietarios.
El HTML estándar (versión 4.01) que soporta Mozilla tiene su especificación en http://www.w3.org/TR/html4.
¿Cómo programar el DOM, ahora? El DOM (nivel 1) expone una serie de propiedades y métodos estandarizados. La mejor referencia (con ejemplos) que conozco es http://www.zvon.org/xxl/DOM1reference/Output/index.html.
Ahora la buena noticia: Explorer 5.x soporta el DOM nivel 1 de forma casi completa. Eso significa que el código que se escriba de acuerdo con el estándar funcionará igual en Explorer 5.x y en NS6.x/Mozilla (!)
Actualmente tu código crossbrowser tendrá ramas para Explorer y NS4. Con la introducción de NS6 habría que introducir una rama más: Explorer, NS4 y NS6. Pero con lo dicho anteriormente parece mejor idea hacer la detección de otro modo:
* Una rama para Explorer 5/NS6 (detectando, por ejemplo, el método document.getElementById)
* Una rama para Explorer 4 (detectando document.all)
* Una rama para NS4 (detectando document.layers)
(Y en este orden, porque document. All también está soportado por Explorer 5, como ya sabes).
Esto tiene la ventaja de que, trabajando en ese orden, tu código será más limpio. Además, conforme las versiones antiguas de Explorer y Netscape vayan abandonándose, podrás, simplemente, "podar" las dos últimas ramas y quedarte con un único código para todos los navegadores.
Como ves, Netscape 6 es una molestia a corto plazo, pero sin duda una inversión de futuro (los métodos de DOM funcionan también sobre XML, y hay APIs de Java, Visual Basic, Perl... que los implementan). Así que, ¡Adelante! No dudes en hacerme cualquier pregunta que te surja en tu aprendizaje.
Un tutorial excelente sobre las nuevas características de NS6 está en http://www.webreference.com/js/ (te interesan las columnas 72 a la 75).
Muchas gracias por tu respuesta y la rapidez en que respondes. Casualmente y después de mucho buscar andaba por esa página que me mandas, de cualquier modo quedo muy agradecido. Ciao. Xanix.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas