В основном я пытаюсь отправить пользовательское событие мыши на элемент ввода текста, используя следующий код (см. этот 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
(все же приведенный выше код отлично работает с флажками независимо от их положения). Я попытался захватить реальное событие и передать координаты экрана и клиента на событие, сделанное cusom, но безрезультатно.
Хотя, возможно, текстовые элементы ввода игнорируют пользовательские события мыши из-за соображений безопасности, но тогда element.focus()
тоже должен работать, что и делает.
Любые идеи или идеи будут очень благодарны!