В основном я пытаюсь отправить пользовательское событие щелчка мыши на элемент ввода текста, используя следующий код (см. jsFiddle ):
function simulateClick(id) {
var clickEvent = document.createEvent("MouseEvents");
clickEvent.initMouseEvent("click", true, true, window, 1, 0, 0, 0, 0,
false, false, false, false, 0, null);
var element = document.getElementById(id);
element.dispatchEvent(clickEvent);
}
Когда я запускаю этот код для элемента type="checkbox"
, он прекрасно работает, но не работает вообще, когда вызывается для элемента type="text"
.
Теперь вот определение initMouseEvent()
в MDN:
event.initMouseEvent(type, canBubble, cancelable, view,
detail, screenX, screenY, clientX, clientY,
ctrlKey, altKey, shiftKey, metaKey,
button, relatedTarget);
Таким образом, в приведенном выше примере screenX, screenY, clientX
и clientY
будут равны 0
(тем не менее, приведенный выше код прекрасно работает с флажками независимо от их положения). Я попытался захватить реальное событие и передать экран и координаты клиента в событие, сделанное клиентом, но безрезультатно.
Хотя, возможно, элементы ввода текста игнорируют пользовательские события мыши по соображениям безопасности, но тогда element.focus()
также не должен работать, что он делает.
Любые идеи или идеи будут с благодарностью!