web-dev-qa-db-fra.com

Comment simuler un clic en utilisant les coordonnées x, y en JavaScript?

Est-il possible d'utiliser des coordonnées données pour simuler un clic en JavaScript dans une page Web?

85
RadiantHex

Vous pouvez envoyer un événement click , bien que ce ne soit pas la même chose qu'un clic réel. Par exemple, il ne peut pas être utilisé pour tromper un document iframe interdomaine en lui faisant croire qu'il a été cliqué.

Tous les navigateurs modernes supportent document.elementFromPoint Et HTMLElement.prototype.click(), depuis au moins IE 6, Firefox 5, toute version de Chrome et probablement toutes les versions de Safari qui vous intéressent. Elle suivra même des liens et soumettra des formulaires:

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

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

133
Andy E

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);
}

Attention à l’utilisation de la méthode click sur un élément - elle est largement implémentée mais pas standard et échouera par ex. PhantomJS. Je suppose que l'implémentation de .click() par jQuery fait ce qu'il faut, mais n'a pas été confirmée.

57
user663031

Ceci est juste réponse de torazaburo , mis à 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);
}
23
user2067021

Pour des raisons de sécurité, vous ne pouvez pas déplacer le pointeur de la souris avec JavaScript ni simuler un clic avec celui-ci.

Qu'est-ce que vous essayez d'accomplir?

0
quantumSoup