Est-il possible d'utiliser des coordonnées données afin de simuler un clic en JavaScript dans une page Web?
Est-il possible d'utiliser des coordonnées données afin de simuler un clic en JavaScript dans une page Web?
Réponses:
Vous pouvez envoyer un événement de clic , bien que ce ne soit pas la même chose qu'un vrai clic. Par exemple, il ne peut pas être utilisé pour tromper un document iframe inter-domaines en lui faisant croire qu'il a été cliqué.
Tous les navigateurs modernes prennent en charge document.elementFromPoint
et HTMLElement.prototype.click()
, depuis au moins IE 6, Firefox 5, toute version de Chrome et probablement toute version de Safari qui vous intéressera probablement. Il suivra même des liens et soumettra des formulaires:
document.elementFromPoint(x, y).click();
https://developer.mozilla.org/En/DOM:document.elementFromPoint https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click
Oui, vous pouvez simuler un clic de souris en créant un événement et en le distribuant:
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);
}
Méfiez-vous d'utiliser la click
méthode sur un élément - elle est largement implémentée mais pas standard et échouera par exemple dans PhantomJS. Je suppose que l'implémentation de jQuery .click()
fait la bonne chose mais je n'ai pas confirmé.
$.click()
initMouseEvent
est obsolète: developer.mozilla.org/en-US/docs/Web/API/MouseEvent
initMouseEvent
vous pouvez utiliser var event = new MouseEvent( "click", { clientX: x, clientY: y, bubbles: true } )
Ceci est également indiqué dans stackoverflow.com/a/36144688/384670 .
Ce n'est que la réponse de torazaburo , mise à jour pour utiliser un objet 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);
}
ça marche pour moi mais ça imprime le bon élément sur la console
c'est le code:
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);
Pour des raisons de sécurité, vous ne pouvez pas déplacer le pointeur de la souris avec javascript, ni simuler un clic avec.
Qu'est-ce que vous essayez d'accomplir?
createEvent()
+initMouseEvent()