tierra de nómadas - tallerWeb

Malas costumbres

Saltar índice de contenido - Desplazarse al índice de navegación.

Contenido: Advertencia. <a href="JavaScript:... . <form action="mailto:... . <a target="_blank"... . <i><b><font... . <table><tr><td><table>... . <noframes>¡Qué pena... . Comentarios.

Advertencia

Algunas de las "técnicas" analizadas a continuación son totalmente incorrectas, otras son obsoletas y el resto simplemente inadecuadas. Es posible encontrar manuales sobre diseño web donde se describe su utilización, y todas ellas están tan extendidas que prácticamente se han convertido en clásicos. El objetivo de este taller no es enmendar errores ajenos, sino dar alternativas.

<a href="JavaScript:PeasoDeFuncion()">

El atributo href debe especificar un URI válido, lo cual no se cumple en este código tan incorrecto como largamente utilizado. Dejando a un lado la discusión sobre la necesidad de utilizar un vínculo para lanzar un script, lo cierto es que este esquema provoca errores en aquellos agentes de usuario que no ejecutan scripts (bien por no contar con esa funcionalidad o porque el usuario lo ha desactivado) e incluso en otros con soporte para scripts pero que interpretan el valor del atributo href de forma estricta.

La manera correcta de lanzar un script es utilizar los atributos de evento, aplicables a cualquier elemento, no sólo a los elementos a: onfocus, onblur, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown y onkeyup:

Código HTML:

<a href="alternativa.html" onclick="Funcion(); return false;">

En el ejemplo anterior, se cuenta con una página, llamada alternativa.html, que se cargará sólo si no se puede ejecutar la sentencia javascript especificada en el atributo onclick. Observemos que el script debe devolver un valor false al ejecutarse, para que quede anulado el vínculo original. Este modelo es muy aconsejable, sobre todo si el script abre una nueva ventana con otro documento, una práctica muy común. En ese caso el atributo href apuntaría al mismo documento:

Código HTML:

<a href="documento.html" onclick="window.open('documento.html', 'Ventana', 'scrollbars=yes,status=yes,width=320,height=240'); return false;">

Los scripts pueden fallar, sobre todo aquellos que se basan no sólo en la especificación ECMA o que incluyen extensiones propietarias. Por ello no sería mala idea modificar el caso del primer ejemplo para conseguir que la función nos devuelva true si el script no ha funcionado satisfactoriamente, y que sea ese valor el que anule o no la acción:

Código HTML:

<a href="alternativa.html" onclick="return Funcion();">

<form action="mailto:micorreo@loquesea.sera">

Este modo de manejar formularios se ha hecho muy popular, debido a su simplicidad (no hay que instalar y configurar ningún script ni programa) y a que no requiere absolutamente nada en el servidor (la mayoría de los servidores gratuitos no admite la ejecución de programas, en especial de aquellos que generan tráfico de correo). Pero el comportamiento de los navegadores ante un atributo action que no especifica un recurso accesible a través de la red es indefinido. Al margen de esta razón, que podría catalogarse de purista, existen otros inconvenientes que desaconsejan esta práctica:

La alternativa correcta es, por supuesto, el uso de algún recurso en el lado del servidor. Es totalmente seguro, independiente del lado del usuario y con incontables opciones para el proceso de datos, más allá del simple almacenamiento en un buzón de correo. Existen multitud de scripts libres para manejar formularios, por ejemplo: FormMail o PHPformMail. Aún en el caso de no contar con un servidor que los admita se puede optar por un servicio externo, y también los hay gratuitos, como los de MelodySoft, Response-O-Matic o Freedback. Y si no se quieren perder cinco minutos en darse de alta en uno de esos servicios, la opción más recomendable y transparente que queda es, directamente, pedirle al visitante que mande los datos por e-mail. Viene a sor lo mismo que el mailto:, pero al menos no hay engaños de por medio.

<a target="_blank"...

La especificación HTML admite el atributo target únicamente en documentos que hacen uso de marcos. No obstante, también es utilizado en páginas normales para conseguir que los enlaces se abran en una ventana diferente. Hay que tener en cuenta que eso no tiene sentido en ciertos dispositivos o programas, y también que, en cierto modo, debería ser el usuario el que tuviera el control sobre el destino de los vínculos. Por otra parte, en ciertas ocasiones es más cómodo mantener una ventana con la página origen de los enlaces. En cualquier caso, es bastante sencillo conseguir el mismo efecto sin utilizar el citado atributo:

Código HTML:

<a href="destino.html" onclick="window.open(this.href);return false;">

Aunque los navegadores ofrecen la posibilidad de abrir cualquier enlace en otra ventana, sin necesidad de que el autor se haya tomado ninguna molestia, se pueden crear mecanismos en la propia página para que el usuario escoja.
El primer ejemplo es una opción bastante simple.

<i><b><font color="#8080F0" size="2" face="Arial">

Durante los últimos años, una de las labores del W3C ha sido la de liberar al lenguaje HTML de todos aquellos elementos y atributos sin entidad estructural, entre los que están font, basefont, u, s, bgcolor, align o center. Esto supone limpiar el contenido de todos aquellos fragmentos que sólo especifican un modo de presentación (por regla general gráfica) dejando esa labor a otras tecnologías complementarias como CSS, con muchas más posibilidades y garantías. Comparadas con las numerosas opciones de formato de las hojas de estilo, las restringidas posibilidades de las versiones obsoletas de HTML son paupérrimas. Mediante la utilización de declaraciones muy sencillas podemos establecer tamaños de fuente más exactos, decoración, márgenes, espaciado, interlineado, sangrías, colores, bordes, fondos, etc. y todo ello de una manera más sistemática: una simple declaración puede sustituir a cientos de etiquetas font. También nos permite utilizar los elementos de una manera más lógica, olvidándonos de otras técnicas peregrinas, como el uso de blockquote para sangrar un texto o de textarea para dotar de barras de desplazamiento a un bloque.

La implementación correcta de una hoja de estilos también obliga, en cierto modo, a mantener una buena estructura en el documento HTML. Pero su mal uso, en especial la definición desmesurada de clases sin una estructura previa de selectores, puede provocar el efecto contrario, lo cual debe llamarnos la atención sobre la necesidad de mantener una jerarquía lógica dentro del documento (encabezados, párrafos, listas, etc.).

Si los inconvenientes de elementos como font no han quedado patentes, todavía hay más ventajas en el uso de CSS. Las hojas de estilo pueden combinarse, activarse fácilmente y no requieren ningún cambio en el contenido del documento. También permiten un equilibrio entre el diseño del autor, las posibilidades del navegador y las preferencias del usuario. Además, un único archivo puede definir limpiamente el formato de todas las páginas de un sitio, con el consiguiente ahorro de trabajo. El ejemplo del siguiente apartado, dedicado a las tablas, ofrece una prueba simple de todo ello.

<table><tr><td><table><tr><td><table><tr><td>...

En el anterior taller ya se experimentó con ejemplos de maquetación sin usar tablas. Pero ahora nos referiremos al tema desde otro punto de vista. El uso de tablas no es, por supuesto, intrínsecamente incorrecto. De hecho, dada la desigual implementación del nivel 2 de CSS, puede ser la salida más sencilla. Pero esto no significa cometer los siguientes errores:

Como ya establecía Occam, la solución más simple es, probablemente, la correcta. El uso indiscriminido de elementos de tabla complica progresivamente la edición o actualización del sitio, al quedar el contenido sepultado bajo toneladas de etiquetas. Y si hablamos de utilizar editores wysiwyg las tablas pueden llegar a tomar vida propia y actuar de forma inescrutable.

Captura de pantallaEn este apartado se incluyen dos ejemplos extremos, que también ilustran los problemas expresados en el apartado anterior. Son dos versiones de una misma página (imaginaria, por supuesto), utilizando tablas y formato dentro del HTML (es decir, la manera "clásica"), y usando los dos niveles de CSS (formato y posicionamiento). En el segundo, el código ha quedado reducido a poco más de la mitad (pero ha ganado un mundo en claridad), se han eliminado las ocho tablas, y los 19 elementos img ornamentales también han sido desechados en favor del uso de CSS. No obstante, siempre se podía haber llegado a una solución más sencilla y conservadora, utilizando un esquema simple de tabla.
Ver ejemplo "clásico" · Ver ejemplo "CSS2" · Ver código del ejemplo "clásico" · Ver código del ejemplo "CSS2".

<noframes>¡Qué pena! Su navegador no soporta frames</noframes>

A estas alturas de la película, cuando los marcos son ya algo obsoleto en lugar de una novedad, ese aviso carece por completo de sentido. Los problemas de los marcos como tales ya se explicaron en el debate 2, pero este apartado está dedicado exclusivamente al elemento noframes, el cual está concebido para dotar al documento de un contenido alternativo, ni más ni menos.

Hoy por hoy podemos asegurar que aquellos usuarios que utilizan navegadores incapaces de representar marcos ya lo saben, no tiene demasiado sentido recordárselo, y tampoco es de recibo sugerirle que cambie de programa. También es posible que el contenido del elemento en cuestión sea procesado por un robot, como ocurre con ciertos buscadores. En este caso el típico mensaje tiene menos sentido aún, es un texto inservible.

Por todo ello, lo lógico es incluir información útil dentro del elemento noframes, la cual puede estructurarse normalmente, como si de un elemento body se tratase. Una descripción del sitio, y un conjunto de vínculos a las páginas que lo componen es quizás la opción más correcta.


Comentarios

uffff

Publicado por isue, 23/09/02, 07:46

ozu, sysifus, ¡das miedo!, pero realmente estas en lo cierto, que es eso de intentar arreglar errores en lo que es evidente que no esta bien, jo..., leeros las especificaciones, el css1, el css2, co.. todo, si no somos nosotros (los que empezamos ahora, los jovenes) quienes erradicamos (espero que sea correcta esta expresion)las buenas costumbres para avanzar tecnologicamente bien, ¡¡¡¿quien creeis que lo hara los de 40 o 50 que estan jartos ya de la vida y solo quieren que las cosas tiren aunque sea mal y solo en el ambito que ellos necesitan, osea el explorer?!!!! , (claro que vamos a esperar de quienes usan win, el que siempre nos ha demostrado su interes sobre el avance ante el marketing)

otra mala costumbre

Publicado por susana, 01/10/02, 11:52

Le escribí a Carlos Benavídez. Me contestó contándome por qué la web está fuera de servicio. Le dí la dirección de este sitio también, para que leyera la noticia sobre él.
Dice: "Me hubiera gustado enviar un mail a la gente de Tierra de nómadas pero no he podido encontrar su dirección en todo el sitio. :-( ¡Una lástima!"

Y como yo tampoco encontré un correo en este sitio, lo mando como comentario de este taller con título tan adecuado.
Los talleres son útiles, claros, concisos y concretos
Pero chicos... no olviden poner el mail del webmaster!
Chau, saludos

Re: otra mala costumbre

Publicado por sysifus, 02/10/02, 11:01

> Pero chicos... no olviden poner el mail del webmaster!
Tienes razón en que puede considerarse una mala costumbre, pero es para contrarrestar un hecho que ya se ha convertido en costumbre, desgraciadamente: la inundación de spam que puede llegar a sufrir cualquier dirección de correo expuesta en la red.
Gracias por el aviso. Trataré de ponerme en contacto con Carlos.

mas

Publicado por error404, 12/10/02, 01:29

Claro que depende del navegador que eso sea un URI valido, pero si descalificas eso como un error habras de descalificar tambien las rutas relativas.
El documento que te pegue es una explicacion al RFC del que haces mención.

Re: mas

Publicado por sysifus, 16/10/02, 02:50

> Claro que depende del navegador que eso sea
> un URI valido, pero si descalificas eso como
> un error habras de descalificar tambien las
> rutas relativas.
Las rutas relativas son válidas según la especificación HTML:
http://www.w3.org/TR/html4/struct/links.html#h-12.4.1
User agents must calculate the base URI for resolving relative URIs according to [RFC1808], section 3.
(El documento aludido está en http://www.ietf.org/rfc/rfc1808.txt)
Pero creo que nos hemos salido del tema. En este caso no se trata de si algo es o no erróneo con las especificaciones en la mano, sino de valorar su usabilidad.

Re: otra mala costumbre

Publicado por Deejay World, 12/12/02, 08:01

> Tienes razón en que puede considerarse una mala costumbre, pero es para contrarrestar
> un hecho que ya se ha convertido en costumbre, desgraciadamente: la inundación de spam
> que puede llegar a sufrir cualquier dirección de correo expuesta en la red.
Bueno, al menos podrías poner un formulario para que te puedan enviar e-mails a través de él. Ya sabes, el típico formulario que apunta a un script que es el que manda el e-mail, y así nadie puede saber cuál es la dirección y por tanto no te pueden hacer spam.

Me estoy impresionando con el CSS

Publicado por dmolina, 18/12/02, 12:15

Gran ejemplo el de las tablas!
Yo usualmente estoy generando código en el servidor (jsp,php,perl,...) por lo que siempre me quiero centrar en la lógica y no en la presentación, por medio de "templates". Sin embargo, esos "templates" al final acaban adoleciendo los mismos defectos que el HTML. Llevo un rato un rato mirando vuestra página y algún tutorial y viendo que en navegadores más sencillos
(léase Lynx, Links, Dillo) puede visualizarse si no bonito al menos correctamente (cosa que no pasa con el uso de tablas).
Gracias a vosotros me he animado a simplificar las plantillas usando CSS.
Seguid así!

Sobre el tema de la URI

Publicado por xoan, 21/01/04, 09:58

Decir que yo no soy un entendido en esto, y que las especificaciones, la verdad, me parecen un toston (jeje); pero simplemente creo que hay que verlo con un poco, solo un poco, de logica.

La realidad es que yo deberia poder explorar cualquier archivo que por su naturaleza fuese explorable, es decir, cualquier documento HTML que estuviese a disposicion del publico en general y cuya carpeta raiz tuviese los permisos correspondientes para ello, sin necesidad de tener ninguna clase detecnologia mas que un navegador para HTTP. Con esto, queda suficienemente claro que una direccion cuyo destino apunte a algo tan absurdo como javascript:abrirVentana(); es ciertamente imposible de alcanzar. Por lo que, para mi, y aplicando una logica "aplastante", un URI valido es aquel que puedo copiar al portapapeles, pegar en la barra de direccion de cualquier navegador y acceder al documento identificado con esa URI.

Respecto a la diferencia entre Identificador Uniforme de Recursos (URI) y Localizador Uniforme de Recursos (URL), y citando textualmente de HTMLconclase, seria esta:

> Cada recurso disponible en la Web necesita un identificador único
> que le diferencie de todos los demás.
> Ese identificador se llama Identificador Uniforme del Recurso,
> en inglés Uniform Resource Identifier, y sus siglas,
> por las que se le conoce habitualmente son URI.
> Existen dos tipos de URI: los URN y los URL.
> Existen dos maneras distintas de identificar un recurso,
> según la finalidad que se persiga: podemos identificar un recurso por su nombre,
> o podemos identificarlo por su localización.
> El URN es un nombre ("N" de "name", "nombre")
> y el URL es un localizador ("L" de "locator", "localizador").
>
> "Bien, veamos, a ver si lo entiendo. Si yo soy un recurso,
> mi URN sería mi nombre propio, y mi URL sería por ejemplo mi domicilio, ¿no?
>
> Los URLs del tipo http están formados por un grupo de palabras separadas por barras inclinadas,
> como por ejemplo, http://html.conclase.net/tutorial/index.
> A estos URLs se les llama URLs genéricos, y a los que no son así,
> se les llama URLs opacos. Por ejemplo, los URLs de tipo mailto son URLs opacos.

Esto continuaria, pero si lo quereis leer con detenimiento (aunque supongo que ya lo habreis leido) la URL esta en el ultimo parrafo citado.

Solo lo pongo porque me parece que se estaban mezclando churras con merinas, solo eso.

Un saludo, y mi enhorabuena por todo el trabajo y la labor tan simplemente genial que haceis y llevais a cabo.

eso del uri o la url

Publicado por kndesign.com.ar, 04/02/07, 04:58

bueno, la verdad q no se que es un URI pero si se muy bien que cuando haces con dreamweaver un pop up sale armado ese codigo javascript q llama a la ventanita. y cuando hay un bloqueador de pop ups es un verdadero lio. creo q para eso se aplica la correccion de este error comun.

gracias!, es muy util saber como corregir las cosas hacemos siempre sin saber q estan mal.

Ver comentarios anteriores...
Agregar comentario...



Sugerir cualquier cosa, contactar, etc...

Avanzada...

22/07/2002. sysifus. Taller nº 4.

Estás en: tierra de nómadas > tallerWeb > Malas costumbres.