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<!DOCTYPE html>
function analizar_hash(){
//analizar el hash para ver si hay una funcion
var funcion = location.hash ? location.hash.split('#')[1] : false;
//si funcion no es false (es decir, si se escribio algo en el hash) intentar llamar a la funcion
if(funcion){
try{
//intentar llamar a la funcion obtenida
eval(funcion + '()');
}catch(err){
//aca hago algo si ocurrio un error llamando la funcion.
//se llamo a una funcion que no existe!
document.getElementById('txt').innerHTML = 'Se llam
ó a la funcion '+ funcion + ', la cual no existe. Error:
<span style="color:red;">'+ err +'
</span>';
}
}
}
//mis funciones
function escribir_hola(){
document.getElementById('txt').innerHTML = 'Se llamó a la funcion "escribir_hola()"';
}
function mostrar_alert(){
alert('Se llamo a la funcion "mostrar_alert()"');
}
<body onload="analizar_hash();"> <p id="txt">No se llam
ó a ninguna funci
ón o no se escribi
ó ning
ún comando en el hash.
</p>
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 :)