基本上我正在尝试使用以下代码将自定义的鼠标单击事件发送到文本输入元素(请参阅此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()
它也不应该工作,它确实如此。
任何想法或见解将不胜感激!