2010-05-23 13 views
7

¿Es posible simular un clic en una página web utilizando javascript pero sin definir un elemento específico, sino simplemente especificar el documento?Simular hacer clic con javascript en el documento

Me hubiera gustado hacer algo así, y si la ubicación pasa a tener un enlace, entonces esto será presionado:

function simulateClick(x, y) 
{ 
    var evt = window.createEvent("MouseEvents"); 
    evt.initMouseEvent("click", true, true, window, 
     x, y, x, y, 1, false, false, false, false, 0, null); 

    window.dispatchEvent(evt); 
} 

Respuesta

5

window.dispatchEvent debe hacer el truco.

<script> 
function simulateClick() { 
    var evt = document.createEvent("Events"); 
    evt.initEvent("click", true, true); 
    window.dispatchEvent(evt); 
} 
addEventListener('click',function(){alert('test');},false); 
</script> 
<button onclick="simulateClick();">Go</button> 

O ... con la información adicional MouseEvents:

<script> 
function simulateClick() { 
    var evt = document.createEvent("MouseEvents"); 
    evt.initMouseEvent("click", true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null); 
    window.dispatchEvent(evt); 
} 
addEventListener('click',function(){alert('test');},false); 
</script> 
<button onclick="simulateClick();">Go</button> 

Los ejemplos anteriores causarán un clic para ser simulados en window cuando se hace clic en el button. Se agrega un detector de eventos al window al alert al hacer clic, por lo que al hacer clic en button se activará de forma indirecta un alert.

Más información: http://www.howtocreate.co.uk/tutorials/javascript/domevents

+0

Quiero ser capaz de dar las coordenadas del evento para que esto se pueda llamar programáticamente de un marco externo. – Charlie

+0

Hola, acabo de agregar otro ejemplo con los datos específicos de 'MouseEvents'. –

+0

Eso es mejor :-) ¿Para qué sirve 'addEventListener'? – Charlie

0

En caso de que alguien se tropieza con esta buscando un marco agnóstico manera de despedir a cualquier HTML y evento de ratón (y configurar algunas opciones, si es necesario), echar un vistazo aquí: How to simulate a mouse click using JavaScript?

+1

Durante la última hora más o menos notamos que publica la misma respuesta a varias preguntas. Si bien apreciamos sus esfuerzos para llegar a la solución que describe, sería más útil si pudiera expresar sus respuestas para abordar el problema específico del OP en lugar de publicar la misma respuesta repetitiva. Si no lo hace, puede atraer votos a la baja ya que otros usuarios pueden ver estas respuestas repetidas como "spam". – Kev

+1

Además, la misma respuesta repetitiva en respuesta a esta pregunta http://stackoverflow.com/questions/6157162 no está relacionada con la pregunta del OP que trata sobre cómo conectar manejadores de eventos y no sobre cómo simular hacer clic en una página elemento. Nuevamente, tómese más tiempo y cuidado para asegurarse de que su respuesta sea relevante. Gracias. – Kev

+0

Hola Kev, ese último que acabo de eliminar. Correcto, estoy entusiasmado. A menudo, la pregunta era más específica que la solución (pregunta para simular un clic, una tecla, ...). Pensé que estaría bien, ya que puede manejar más de lo solicitado. Lo que hice fue hacer una búsqueda para [javascript] + simular evento (si recuerdo correcto, era tarde en la noche). Cuando una vez estaba buscando una respuesta sobre cómo simular un clic en un enlace, me topé con la solución kangax. Personalmente, estuve muy feliz de encontrar una solución que pueda manejar más de lo que necesitaba y me mantuve relativamente ligera. – TweeZz

Cuestiones relacionadas