问题描述
我想在给定元素上触发任何可能的用户操作,例如: click, focus, mouseup, mousedown, keyup, keydown, etc...
是这样的:
element.onclick();
element.onfocus();
element.onsubmit();
element.onmouseover();
element.onkeyup();
element.onkeydown();
还是有更好的办法实现这一目标?
谢谢
1楼
Dario
2
已采纳
2015-07-31 07:49:21
如果要模拟用户生成的鼠标事件(如单击),则应注意以下内容:
<div id="someID" onclick="alert('a');">
test
</div>
<script>
var theElement = document.getElementById('someID')
, triggerEvent = function triggerEvent(event, element) {
var evObj = document.createEvent('MouseEvents');
evObj.initEvent(event, true, true);
element.dispatchEvent(evObj);
};
triggerEvent('click', theElement);
</script>
基本上,您从元素生成一个事件,然后让处理程序处理该事件。 是事件列表。
希望这会有所帮助。
2楼
Havvy
1
2015-07-31 06:42:08
在可能是函数的元素上有各种onevent
属性,您可以调用它们,但是这样做时,您将在DOM事件处理系统周围进行路由。
您必须自己将适当的Event对象传递给函数,并且它们不会自动冒泡到父元素。
我不确定如果使用addEventListener
设置了元素的事件,而您尝试直接调用其onevent
函数,会发生什么。
因此,继续使用HTMLElement.prototype.click
和HTMLElement.prototype.focus
类的方法。
他们为您处理所有这些。