46 votos

¿Es posible activar un enlace ' s (o cualquier otro elemento ' s) Haz clic en el evento a través de JavaScript?

Voy a escribir algo de código JavaScript que necesita para desencadenar la click evento para un enlace. En Internet Explorer puedo hacer esto

var button = document.getElementById('myButton');
button.click();

Pero esto no funciona en Firefox, y supongo que cualquier otro navegador. En Firefox, he hecho esto

var button = document.getElementById('myButton');
window.location = button.href;

Siento que esta no es la mejor manera de hacer esto. Existe una mejor forma de activar un click evento? Preferiblemente algo que funciona independientemente del tipo de elemento o el navegador.

73voto

Chris MacDonald Puntos 3261

http://jehiah.cz/Archive/firing-JavaScript-Events-properly

function fireEvent(element,event) {
   if (document.createEvent) {
       // dispatch for firefox + others
       var evt = document.createEvent("HTMLEvents");
       evt.initEvent(event, true, true ); // event type,bubbling,cancelable
       return !element.dispatchEvent(evt);
   } else {
       // dispatch for IE
       var evt = document.createEventObject();
       return element.fireEvent('on'+event,evt)
   }
}

2voto

Andrew Hedges Puntos 11496

No se lo recomiendo, pero puedes llamar el atributo onclick de un elemento HTML como método.

<a id="my-link" href="#" onclick="alert('Hello world');">My link</a>

document.getElementById('my-link').onclick();

1voto

Vinko Vrsalovic Puntos 116138

No es generalmente posible, que yo sepa, mozilla tiene el método click() pero para elementos de entrada solamente, no enlaces.

¿Por qué no simplemente crear una función que el botón se llamará en el manejador onClick y, cuando quieras hacer 'clic' la llamada del botón la función en su lugar?

0voto

unexist Puntos 1647

Mozilla tiene una política más estricta para JS permitido acciones/eventos - yo también tuve problemas similares con el evento click(). Se desactiva en algunos elementos para evitar XSS.

¿Qué pasa con redirigir el navegador? Este debe trabajar por todas partes.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X