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.elementFromPointet 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 clickmé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()
initMouseEventest obsolète: developer.mozilla.org/en-US/docs/Web/API/MouseEvent
initMouseEventvous 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()