Как я могу вручную запускать клик справа с помощью Javascript?
Я могу сделать это с помощью jQuery, но я могу использовать только чистый Javascript в этом случае.
Как я могу вручную запускать клик справа с помощью Javascript?
Я могу сделать это с помощью jQuery, но я могу использовать только чистый Javascript в этом случае.
Создайте событие, используя конструктор 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');
}
Другой вариант, на этот раз с использованием 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);
Принимая 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. Удачи:)