tipos pasar operadores funciones entre concatenar comparacion asignacion javascript jquery html mouseevent mouseclick-event

pasar - ¿Cómo simular un clic utilizando las coordenadas x, y en JavaScript?



pasar variables entre funciones javascript (4)

¿Es posible usar coordenadas dadas para simular un clic en JavaScript dentro de una página web?


Esta es solo la respuesta de torazaburo , actualizada para usar un objeto MouseEvent.

function click(x, y) { var ev = new MouseEvent(''click'', { ''view'': window, ''bubbles'': true, ''cancelable'': true, ''screenX'': x, ''screenY'': y }); var el = document.elementFromPoint(x, y); el.dispatchEvent(ev); }


Por razones de seguridad, no puede mover el puntero del mouse con javascript, ni simular un clic con él.

¿Qué es lo que estás tratando de lograr?


Puede enviar un evento de clic , aunque esto no es lo mismo que un clic real. Por ejemplo, no se puede usar para engañar a un documento de iframe de dominios cruzados y pensar que se hizo clic.

Todos los navegadores modernos son compatibles con document.elementFromPoint y HTMLElement.prototype.click() , ya que al menos IE 6, Firefox 5, cualquier versión de Chrome y probablemente cualquier versión de Safari es probable que te interese. Incluso seguirá enlaces y enviará formularios:

document.elementFromPoint(x, y).click();

https://developer.mozilla.org/En/DOM:document.elementFromPoint https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click


Sí, puede simular un clic del mouse creando un evento y enviándolo:

function click(x,y){ var ev = document.createEvent("MouseEvent"); var el = document.elementFromPoint(x,y); ev.initMouseEvent( "click", true /* bubble */, true /* cancelable */, window, null, x, y, 0, 0, /* coordinates */ false, false, false, false, /* modifier keys */ 0 /*left*/, null ); el.dispatchEvent(ev); }

Tenga cuidado con el uso del método de click en un elemento: está ampliamente implementado pero no es estándar y fallará, por ejemplo, en PhantomJS. Asumo que la implementación de jQuery de .click() hace lo correcto pero no ha confirmado.