Ver Mensaje Individual
  #6 (permalink)  
Antiguo 21/06/2011, 06:07
Avatar de Naahuel
Naahuel
 
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 2 meses
Puntos: 192
Respuesta: ¿Cómo añadir una función a un enlace?

Podrías mostrarme el código que has hecho y te puedo indicar dónde está tu error.

Te hice un ejemplo mucho más elaborado que espero entiendas mejor. Está comentado para que lo sigas paso a paso.

No llamar a ninguna función:
http://nahueljose.com.ar/llamar-funcion.html

Llamar a la función escribir_hola() (la cual sí existe):
http://nahueljose.com.ar/llamar-func...#escribir_hola

Llamar a la función mostrar_alert() (sí existe):
http://nahueljose.com.ar/llamar-func...#mostrar_alert

Llamar a la función funcion_loca() (la cual no existe):
http://nahueljose.com.ar/llamar-func...l#funcion_loca

Código fuente:
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. function analizar_hash(){
  3.     //analizar el hash para ver si hay una funcion
  4.     var funcion = location.hash ? location.hash.split('#')[1] : false;
  5.    
  6.     //si funcion no es false (es decir, si se escribio algo en el hash) intentar llamar a la funcion
  7.     if(funcion){
  8.         try{
  9.             //intentar llamar a la funcion obtenida
  10.             eval(funcion + '()');
  11.         }catch(err){
  12.             //aca hago algo si ocurrio un error llamando la funcion.
  13.             //se llamo a una funcion que no existe!
  14.             document.getElementById('txt').innerHTML = 'Se llam&oacute; a la funcion '+ funcion + ', la cual no existe. Error: <span style="color:red;">'+ err +'</span>';
  15.         }
  16.     }
  17. }
  18.  
  19.  
  20. //mis funciones
  21. function escribir_hola(){
  22.     document.getElementById('txt').innerHTML = 'Se llam&oacute; a la funcion "escribir_hola()"';
  23. }
  24. function mostrar_alert(){
  25.     alert('Se llamo a la funcion "mostrar_alert()"');
  26. }
  27.  
  28. </head>
  29. <body onload="analizar_hash();">
  30.   <p id="txt">No se llam&oacute; a ninguna funci&oacute;n o no se escribi&oacute; ning&uacute;n comando en el hash.</p>
  31. </body>
  32. </html>

El ejemplo funciona en todos los navegadores en los que lo he probado (IE6+, Chrome, Firefox).
Lo que hace es simple. Analiza el hash (el valor de # que se ponga en el url) para ver si hay una función. Si no hay un hash, la variable funcion es false y no hace nada.
Si hay algo escrito después del hash, se intenta (con "try catch") llamar a la función. Si esta existe, se la llama correctamente. De no existir, hay un manejo de error en el catch.

Y eso es todo :)
__________________
nahueljose.com.ar