如何模拟JavaScript的点击?

我只是想知道如何使用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'); 

那么简单的事情呢?

 document.getElementById('elementID').click(); 

即使通过IE 支持 。

你有没有考虑过使用jQuery来避免所有的浏览器检测? 使用jQuery,它将如此简单:

 $("#mytest1").click(); 

你可以使用jQuery为自己节省一大堆空间。 你只需要使用:

 $('#myElement').trigger("click") 

最好的答案是最好的! 但是,当etype = 'click'时,它不会在Firefox中为我触发鼠标事件。

所以,我将document.createEvent更改为'MouseEvents' ,解决了这个问题。 额外的代码是testing是否有其他代码干扰事件,如果它被取消,我会logging到控制台。

 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. } } } 
 var elem = document.getElementById('mytest1'); // Simulate clicking on the specified element. triggerEvent( elem, 'click' ); /** * Trigger the specified event on the specified element. * @param {Object} elem the target element. * @param {String} event the type of the event (eg 'click'). */ function triggerEvent( elem, event ) { var clickEvent = new Event( event ); // Create the event. elem.dispatchEvent( clickEvent ); // Dispatch the event. } 

参考