¿Es posible utilizar las coordenadas dadas para simular un clic en JavaScript dentro de una página web?
¿Es posible utilizar las coordenadas dadas para simular un clic en JavaScript dentro de una página web?
Respuestas:
Puedes enviar un clic evento de , aunque esto no es lo mismo que un clic real. Por ejemplo, no se puede utilizar para engañar a un documento iframe de dominios cruzados haciéndole creer que se hizo clic en él.
Todos los navegadores modernos son compatibles document.elementFromPoint
y HTMLElement.prototype.click()
, desde al menos IE 6, Firefox 5, cualquier versión de Chrome y probablemente cualquier versión de Safari que le 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 click
método en un elemento: está ampliamente implementado pero no es estándar y fallará, por ejemplo, en PhantomJS. Supongo que la implementación de jQuery .click()
hace lo correcto pero no lo he confirmado.
$.click()
initMouseEvent
ha quedado obsoleto: developer.mozilla.org/en-US/docs/Web/API/MouseEvent/…
initMouseEvent
, puede usar var event = new MouseEvent( "click", { clientX: x, clientY: y, bubbles: true } )
Esto también se muestra en stackoverflow.com/a/36144688/384670 .
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);
}
No me funciona, pero imprime el elemento correcto en la consola.
este es el código:
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);
console.log(el); //print element to console
el.dispatchEvent(ev);
}
click(400, 400);
Por razones de seguridad, no puede mover el puntero del mouse con javascript ni simular un clic con él.
¿Qué es lo que está tratando de lograr?
createEvent()
+initMouseEvent()