[Javaescript] Comportamiento de los enlaces vía CSS
"Hernán Beati - SaberWeb.com.ar"
hernan en saberweb.com.ar
Jue Oct 4 06:17:00 PDT 2007
David Pardo escribió:
>>> A mí estas cosas me parecen más de la capa de comportamiento ¿qué
>>> me pierdo?
>> Yo creo que nada. Pertenecen a la capa de comportamiento.
Yo opino lo mismo. Capa de comportamiento claramente.
>
> Yo estoy a favor de incluir en la capa de presentación ese tipo de
> elementos. Quiero decir -a ver si me explico bien- que tiene sentido
> separar del contenido del documento cómo se van a comportar los enlaces
> en los navegadores que lo soporten.
Es claro que tiene sentido separar el contenido del comportamiento, pero
no colocándolo en la capa de presentación (CSS).
Creo que te falta considerar una capa. No son "presentación" versus
"contenido" solamente.
Más bien son tres capas:
1) Contenido (marcado HTML, estructura semántica).
2) Presentación (decoración, CSS e imágenes).
3) COMPORTAMIENTO (funcionalidades de interacción, JavaScript).
> En particular:
>
> * replace current document or portion of a document by target
> Normalmente el documento se abrirá dentro del flujo de navegación, pero
> es posible querer presentarlo dentro de la misma ventana. O como dicen
> los siguientes puntos, en ventana nueva, por encima, por debajo o en una
> flotante.
>
> El funcionamiento de la aplicación no varía, pero me parece que tiene
> más sentido escribir:
>
> a .nueva{
> window:new-window
> }
Creo que si la información se abre o no se abre en una nueva ventana es
claramente una cuestión de "Comportamiento", y no tiene por qué estar en
la hoja de estilos CSS (capa de "presentación").
>
> que
>
> <a href="http://..." onClick="abrirNuevaVentana('http://...')">
>
Por lo tanto, ese JavaScript no iría en el "marcado HTML" como un evento
onclick intrusivo (tal como lo colocas en tu ejemplo), sino que
perfectamente podría manejarse con una función del DOM que, sin tocar el
marcado HTML, adicione la funcionalidad de abrir en nueva ventana "en
los casos en que tenga sentido": JavaScript activado, dispositivo que
permita abrir nuevas ventanas, etc.
En el resto de condiciones, que se abra en la misma ventana.
La decisión acerca de cuál comportamiento ejecutar, la debe tomar la
capa de "comportamiento" (el JavaScript), como es lógico.
Ejemplo:
<a href="ventananueva.html" id="nuevaventana" title="Se intentará
mostrar una nueva ventana con informes sobre el Curso de
JavaScript">Curso de JavaScript</a>.
<script type="text/javascript">
var enlace = getElementByID('nuevaventana');
enlace.onclick = function() { ...
// aquí vendrían todas las validaciones, y el cambio de "Comportamiento"
de 'nuevaventana'
}
</script>
Si no hay JavaScript, el enlace funciona con su "comportamiento"
original de reemplazar el contenido de la ventana del navegador. Si hay
JavaScript, abre una nueva ventana.
Saludos!
Hernán Beati
-------------------------
www.saberweb.com.ar
-------------------------
Más información sobre la lista de distribución Javaescript