我只是想知道如何使用JavaScript来模拟对一个元素的点击。
目前我有。
<script type="text/javascript">
function simulateClick(control)
{
if (document.all)
{
control.click();
}
else
{
var evObj = document.createEvent('MouseEvents');
evObj.initMouseEvent('click', true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null );
control.dispatchEvent(evObj);
}
}
</script>
<a href="http://www.google.com" id="mytest1">test 1</a><br>
<script type="text/javascript">
simulateClick(document.getElementById('mytest1'));
</script>
但它不工作 :(
有什么想法吗?
这就是我所做的。这很简单,但它很有效。
function eventFire(el, etype){
if (el.fireEvent) {
el.fireEvent('on' + etype);
} else {
var evObj = document.createEvent('Events');
evObj.initEvent(etype, true, false);
el.dispatchEvent(evObj);
}
}
用法。
eventFire(document.getElementById('mytest1'), 'click');
最上面的答案是最好的!然而,在Firefox中,当etype = 'click'
时,它没有为我触发鼠标事件。
所以,我把document.createEvent
改为'MouseEvents'
,这就解决了问题。额外的代码是为了测试是否有另一点代码干扰了该事件,如果它被取消了,我将把它记录到控制台。
function eventFire(el, etype){
if (el.fireEvent) {
el.fireEvent('on' + etype);
} else {
var evObj = document.createEvent('MouseEvents');
evObj.initEvent(etype, true, false);
var canceled = !el.dispatchEvent(evObj);
if (canceled) {
// A handler called preventDefault.
console.log("automatic click canceled");
} else {
// None of the handlers called preventDefault.
}
}
}