(X)HTML Strict y Abrir Vínculos en Nuevas Ventanas

Trabajando en el proyecto cesarfrick.com se me ocurrió (como me pasa cada vez que deseo hacer un proyecto que me resulta especialmente interesante y me permite investigar) adecuarme a las normas, en este caso a la recomendación XHTML Strict 1.0 de la W3C.
*Sí, tienes razón, esto va a ser muy geek 😉
Pues eso, me pongo a trabajar y decido colocar en la página principal algunos de los trabajos que he realizado, como una forma de dar al visitante una idea rápida de mis “habilidades” 😆
Entonces me surge un gran problema: Para evitar que el usuario se “escape” de mi site al visitar los proyectos que están en línea, decido utilizar lo que todo Diseñador Web conoce desde el principio:
<a href="direccion" target="_blank">El Link </a>
Esta simple línea haría lo que necesitábamos de ella: abriría “direccion” en una página nueva.
El problema surge al darme que cuenta que en XHTML Strict, el atributo “target” se ha eliminado, lo que hace que el site no valide a causa de esto.
Como siempre, primero que hice fue ponerme a investigar, por lo que apelé a San Google para averiguar si existía alguna forma alterna de hacer lo que buscaba, o si debía simplemente seguir las directrices de la W3C y permitir que todos los vínculos se carguen en la misma ventana/pestaña.
Lo primero de lo que me dí cuenta es que es un tema sumamente discutido y que, por supuesto, hay multitud de opiniones: desde los puristas que aplican sin chistar todas las especificaciones de la W3C, hasta los me_importa_una_… para quienes lo único importante es que el site se vea bien en todos los navegadores y haga lo que quiero que haga. No voy a llenar este post con esta discusión, porque se alargaría hasta el infinito, y para eso ya me basto yo solo.
Fue así como llegué a un artículo escrito por Kevin Yank, llamado New-Window Links in a Standards-Compliant World, en sitepoint. En él su autor, además de ofrecer un modo de resolver este problema por medio de un pequeño Javascript, argumenta las razones por las que, según su criterio, esto no es una especie de hack al estándar y que (al contrario de lo que piensan algunos puristas) no hace que, al final, el código siga siendo inválido.
En resumidas cuentas, Yank expone que (hago una traducción libre del artículo en este punto):

Como un jodido perfeccionista, mi primer impulso cuando aprendí esta solución fue preguntarme, “¿existe realmente una diferencia?”. Y sí, suelo hablar conmigo mismo mientras estoy investigando. [Nota del Traductor: ¡Yo también! 😆 ]

Quiero decir, si el atributo target de la etiqueta <a> está siendo descartada ¿realmente hace alguna diferencia crearla por medio de Javascript, en vez de por HTML? Claro, la página validará al contrastarla con las Definiciones de Tipo de HTML 4.0 Estricto y XHTML 1.0 Estricto ¿pero no estamos haciendo una trampa técnica? La respuesta es no.

El Modelo de Objeto de Documento (DOM), que gobierna los objetos del documento y sus atributos que están disponibles para el código Javascript, es un estándar totalmente separado de (X)HTML. Considere también que el estándar DOM 2.0 que fue publicado en Enero de 2003 (bastante después de XHTML 1.0, por no hablar de HTML 4.0) incluye este atributo. Parece claro que, si bien se ha previsto descartarlo en (X)HTML, podrá accederse a través del DOM en el futuro previsible.

Esto me parece un argumento bastante aceptable (y no sólo convenientemente aceptable), puesto que usando esta técnica nos mantenemos dentro de los estándares, no sólo de (X)HTML Estricto, sino también del DOM. Claro que seguramente ésto no zanjará la polémica entre puristas y no-puristas, pero me parece que es una alternativa coherente y que no rompe con un trabajo limpio y seguidor de las normas.
El único punto que no podremos evitar será que el usuario seguirá abriendo los links en la misma ventana si tiene Javascript desabilitado en su explorador, pero teniendo en cuenta que la mayoría de los exploradores lo soportan, el número de usuarios a los que les ocurrirá esto será realmente mínimo.
Un punto respecto a la usabilidad: Como norma general, deberías agregar una nota o un icono advirtiendo a tus usuarios que el vínculo se abrirá en una nueva ventana, así le evitas sorpresas desagradables. De hecho, lo ideal sería darle la opción de abrirlo en la misma ventana si lo desea.
Bueno, después de toda esta perorata, me dispondré a explicar esta técnica, pero eso lo haré en otro post, éste ya está demasiado largo… 😉

Update: Conversando sobre este tema con Inyaka, me dí cuenta que dejé este post huérfano y no coloqué los links de seguimiento del tema, así que aquí lo tienen:

La aplicación de la técnica: Abrir Nueva Ventana en (X)HTML Strict

Una adaptación que hice para resolver el tema de la usabilidad (que al final fue el script que usé): Abrir Nueva Ventana en (X)HTML Strict II (mantener la usabilidad)


2 thoughts on “(X)HTML Strict y Abrir Vínculos en Nuevas Ventanas

  1. no me convenció el argumento 😄 (soy demasiado ‘purista’) pero es una apreciación personal, creo que con la magia del 3º botón (el de la ruedita) se le da la opción al usuario de si ve el contenido en la misma ventana o en otra, de echo lo que sucede justamente con flash y los links, lo considero una gran debilidad pues a pesar de que amo flash con toda mi alma geek, pues es el programador quien decide a donde dirige el enlace y no el usuario lo que para grandes contenidos termina siendo molesto, lo mismo pasaria en este caso si la técnica se masificara.

  2. Ya lo decía, no pensaba resolver la discusión entre puristas y no-puristas. Ya me costó a mí mismo cierto trabajo decidirme a adoptar esta técnica, e incluso tuve que hacerle ciertas modificaciones para que fuese usable, pero no puedo negar que la lógica me parece clara, otra cosa es la sensación que da.
    Lo de la ruedita está bien, pero te encuentras otra vez con el asunto de la usabilidad y que dependes de variables que no puedes controlar ¿y si el usuario no tiene ruda en el mouse? (piensa en los usuarios de Mac), ¿y si no sabe lo de la ruedita? Por ejemplo, también puedes hacerlo presionando la tecla Ctl + click, pero nuevamente te encuentras con que sólo será disponible para los usuarios que saben. Tratando de resolver esos problemas fue que decidí hacer mi propia variación de la técnica, que coloco en el segundo link del update.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s