Javascript no intrusivo

  • Ene
  • 20

4 comentarios! 354 palabras - 1 hits

Behaviour, es una imprescindible libreria que nos permite programar con javascript de manera mas sencilla

Una de las premisas mas importantes planteadas al diseñar mediante el uso de estándares es la separación de capas lógicas, es decir, por un lado tenemos el maquetado, que se representa mediante lenguaje (x)html, por otra parte esta el diseño visual, que normalmente se adjunta mediantes hojas de estilo (css) hasta aquí todo esta muy claro.

Pero que ocurre con el comportamiento que se le quiera asignar a algunos objetos del documento, aquí es donde entra en juego el lenguaje JavaScript.

Imaginemos por ejemplo que tenemos un enlace al que le queremos dar una funcionalidad un poco diferente al resto, abrirlo en una ventana nueva por ejemplo, a la mayoría lo primero que nos viene en mente es hacer algo mas o menos similar a lo siguiente:

  1.  
  2.     <a href="popup.html" onclick="window.open('popup.html', 'width=400,height=450,resizable=yes')">Abrir popup</a>
  3.  

Lamentablemente esta linea acaba con toda nuestra teoría de separación de capas, por fortuna, existen maneras alternativas para asignar eventos usando JavaScript, en el caso concreto de este ejemplo una manera mas limpia de realizar lo mismo necesitaba algo mas de código para poder llevarse a cabo.

Primero tendremos que asignar una identidad única al enlace, y luego mediante el DOM asignaremos el evento a dicha id, algo mas o menos tal que así.

  1.  
  2.     <a href="popup.html" id="mypopup">Abrir popup</a>
  3.  
  1.  
  2.     <script type="text/javascript">
  3.     var x = getElementByID('mypopup');
  4.     x.onclick = function() {
  5.         window.open('popup.html', 'width=400,height=450,resizable=yes')
  6.     }
  7.     </script>
  8.  

Sencillo, ¿no? bueno, quizás no resulte tan sencillo, pero gracias a mentes inquietas como la de Ben Nolan, disponemos de algunas herramientas que si que hacen que resulte una tarea sencilla.

Me refiero a behaviour, una librería JavaScript basada en la función document.getElementsBySelector escrita por Simon Willison. Este fantástico “trozo de código” nos permite olvidarnos de programar complejas funciones que asignen eventos según clase, id o selector.

Continuando con el ejemplo anterior, si incluimos esta librería podemos conseguir el mismo efecto asignando la función directamente al id seleccionado,

  1.  
  2.     <script type="text/javascript">
  3.       var myrules = {
  4.                   '#mypopup' : function(element){
  5.                         element.onclick = function(){
  6.                               window.open('popup.html', 'width=400,height=450,resizable=yes')
  7.                   }
  8.             }
  9.       };
  10.     Behaviour.register(myrules);
  11.     </script>
  12.  

Personalmente creo que resulta una librería de inmensa utilidad, ahora solo falta ver como poder sacarle partido de manera óptima.

Salu2 y buen fin de semana

1 enlace

  1. Garbage In, Garbage Out Javascript no intrusivo desde Garbage In, Garbage Out [25.07.2006]

4 comentarios

  • Feb
  • 06

# Escrito por Enrique hace 4 años, 1 mes

Genial Alex… como siempre ;-)

Salu2.


  • Jul
  • 18

# Escrito por obokaman hace 3 años, 7 meses

Buen artículo. En efecto, en la actualidad hay bastantes librerías que pueden facilitarnos mucho la vida a la hora de implementar soluciones accesibles y de mantener el código lo más limpio posible.

Te recomiendo que le eches un vistazo si es que aún no la conoces a la librería JQuery ( http://www.jquery.com ). Es realmente pequeña ( unos 10k ) y es un pequeño compendio de funciones para facilitar el acceso y modificacion del DOM, animaciones y funciones AJAX, all-in-one.

Un saludo.


  • Nov
  • 22

# Escrito por JAQ hace 3 años, 3 meses

yo quiero abrir un popup desde un xml y he seguido las instrucciones y no me sale con las medidas que quiero. Si podeis ayudarme, os lo agradecería de véras. Este es mi código:

menu A HREF*=”Mbse_Hombres.html” target=”window.open(‘Mbse_Hombres.html’, ‘width=850,height=500,top=150,left=100,resizable=yes’)”>Camisetas y Camisas

(he quitado algunas corcheas para que veias bien el código)


  • Jun
  • 07

# Escrito por pablo hace 2 años, 9 meses

estan alreves los botones de next prev, muy bueno el ejemplo , aunque me quedo con Rounded Corners de jquery, solo porque trae mas opciones , como Beveled Corners,Notched Corners, Dog-ear Corners, Bite Corners, et..etc..

http://methvin.com/jquery/jq-corner.html

linda pagina ! salud!


Escribe tu comentario

Puedes utilizar este formulario para escribir tu opinion sobre esta entrada, no existe ningun tipo de limitacion a la hora de enviar opiniones, tan solo sigue unas reglas basicas de cortesia y todos estaremos mas contentos.

Puedes identificarte utilizando OpenID, solo tienes que introducir tu URL OpenID en el siguiente campo y pulsar el boton de validar.





Instrucciones para los comentarios

El simbolo * indica que se trata de un campo obligatorio.

Este sitio usa Markdown junto con Smartypants para educar los textos, tambien esta disponible para los comentarios.

A continuación os muestro algunas de las equivalencias:

  • [enlace de ejemplo](http://example.com/) resulta enlace de ejemplo.
  • **Texto en Negrita**
  • _Italica_
  • > blockquote
  • > > nested blockquote
  • * Esto es un elemento de una lista desordenada (ul)
  • 1. Esto es un elemento de una lista ordenada (ol)

MC Puedes seguir las respuestas a tus comentarios con MyComments.