Я знаю о document.form.button.click()
методе. Тем не менее, я хотел бы знать, как смоделировать onclick
событие.
Я нашел этот код где-то здесь в Stack Overflow, но я не знаю, как его использовать :(
function contextMenuClick()
{
var element= 'button'
var evt = element.ownerDocument.createEvent('MouseEvents');
evt.initMouseEvent('contextmenu', true, true,
element.ownerDocument.defaultView, 1, 0, 0, 0, 0, false,
false, false, false, 1, null);
element.dispatchEvent(evt);
}
Как запустить событие щелчка мышью с использованием JavaScript?
javascript
dom-events
mouseclick-event
Нок Имчен
источник
источник
Ответы:
(Измененная версия, чтобы она работала без prototype.js)
Вы можете использовать это так:
Обратите внимание, что в качестве третьего параметра вы можете передать «параметры». Опции, которые вы не указали, взяты из defaultOptions (см. Нижнюю часть скрипта). Так что если вы, например, хотите указать координаты мыши, вы можете сделать что-то вроде:
Вы можете использовать аналогичный подход, чтобы переопределить другие параметры по умолчанию.
Кредиты должны идти в Кангакс . Вот оригинальный источник (специфичный для prototype.js).
источник
Вот функция JavaScript, которая будет имитировать щелчок (или любое событие мыши) на целевом элементе:
Вот рабочий пример: http://www.spookandpuff.com/examples/clickSimulation.html
Вы можете смоделировать щелчок по любому элементу в DOM . Что-то вроде
simulatedClick(document.getElementById('yourButtonId'))
бы сработало.Вы можете передать объект в,
options
чтобы переопределить значения по умолчанию (чтобы имитировать, какую кнопку мыши вы хотите, удерживать Shift/ Alt/ Ctrlи т. Д. Параметры, которые он принимает, основаны на API MouseEvents .Я тестировал в Firefox, Safari и Chrome. Internet Explorer может потребоваться специальная обработка, я не уверен.
источник
type: options.click || 'click'
должно бытьtype: options.type || 'click'
.<div id = "outer"><div id = "inner"></div></div> simulatedClick(document.getElementById('outer'));
не будет нажимать на внутренний элемент.div
элемент содержит кнопку или ссылку - вы не хотите, чтобы щелчок по внешнему элементу вызывал щелчок по внутреннему элементу.||
оператор в таких случаях, потому что к сожалению,canBubble:options.canBubble || true,
теперь всегда имеет значение true, и, очевидно, никто не заметит его в течение 5 лет.Более простым и стандартным способом симуляции щелчка мыши было бы непосредственное использование конструктора событий для создания события и его отправки.
Демо: http://jsfiddle.net/DerekL/932wyok6/
Это работает во всех современных браузерах. Для старых браузеров, включая IE,
MouseEvent.initMouseEvent
придется использовать, к сожалению, хотя это не рекомендуется.источник
Из документации Mozilla Developer Network (MDN) HTMLElement.click () - это то, что вы ищете. Вы можете узнать больше событий здесь .
источник
Основываясь на ответе Дерека, я убедился, что
работает, как ожидается, даже с ключевыми модификаторами. И это не устаревший API, насколько я вижу. Вы также можете проверить на этой странице .
источник
Вы можете использовать elementFromPoint :
поддерживается во всех браузерах: https://caniuse.com/#feat=element-from-point
источник
Код JavaScript
HTML-код
источник