Подтвердить что ты не робот

Триггер правой кнопкой мыши, используя чистый Javascript

Как я могу вручную запускать клик справа с помощью Javascript?

Я могу сделать это с помощью jQuery, но я могу использовать только чистый Javascript в этом случае.

4b9b3361

Ответ 1

Создайте событие, используя конструктор CustomEvent или (если он не поддерживается), создайте событие, используя document.createEvent, с помощью аргумент строки "HTMLEvents" (потому что вы собираетесь создать событие click). Затем используйте метод initEvent для создания события click.

Наконец, используйте метод dispatchEvent для запуска события. Если вы используете IE, вместо этого следует использовать метод fireEvent.

Если вы хотите вызвать событие rightclick, contextmenu, используйте следующий код:

var element = document.getElementById('yourElement');
if (window.CustomEvent) {
    element.dispatchEvent(new CustomEvent('contextmenu'));
} else if (document.createEvent) {
    var ev = document.createEvent('HTMLEvents');
    ev.initEvent('contextmenu', true, false);
    element.dispatchEvent(ev);
} else { // Internet Explorer
    element.fireEvent('oncontextmenu');
}

Ответ 2

Другой вариант, на этот раз с использованием MouseEvent API, который немного более современен. В моем случае я фактически отправляю все три события mouseup/mousedown/contextmenu:

var element = document.getElementById("yourElement");
var ev1 = new MouseEvent("mousedown", {
    bubbles: true,
    cancelable: false,
    view: window,
    button: 2,
    buttons: 2,
    clientX: element.getBoundingClientRect().x,
    clientY: element.getBoundingClientRect().y
});
element.dispatchEvent(ev1);
var ev2 = new MouseEvent("mouseup", {
    bubbles: true,
    cancelable: false,
    view: window,
    button: 2,
    buttons: 0,
    clientX: element.getBoundingClientRect().x,
    clientY: element.getBoundingClientRect().y
});
element.dispatchEvent(ev2);
var ev3 = new MouseEvent("contextmenu", {
    bubbles: true,
    cancelable: false,
    view: window,
    button: 2,
    buttons: 0,
    clientX: element.getBoundingClientRect().x,
    clientY: element.getBoundingClientRect().y
});
element.dispatchEvent(ev3);

Ответ 3

Принимая Rob W, например, я не пробовал, но вам нужно создать объект события и передать его при запуске события. для правого щелчка pass event.button = 2;

var element = document.getElementById("yourElement"),
  ev;
if(document.createEvent ) {
    ev = document.createEvent("MouseEvents");
    ev.initMouseEvent("click", true, false, window,0,0,0,0,0,false,false,false,false,2,null);
    element.dispatchEvent(ev);
} else {
    ev = document.createEventObject();
    ev.button = 2;
    element.fireEvent('onclick', ev);
}

Обновлен в соответствии с mdn initMouseEvent. Удачи:)