我只是想知道如何使用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);
  }
}
<a href="http://www.google.com" id="mytest1">test 1</a><br>

<script type="text/javascript">
    simulateClick(document.getElementById('mytest1'));
</script>

但它并没有起作用:(

什么好主意吗?


当前回答

如果事件没有被触发,请使用timeout

setTimeout(function(){ document.getElementById('your_id').click(); }, 200); 

其他回答

你考虑过使用jQuery来避免所有的浏览器检测吗?使用jQuery,它将像下面这样简单:

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

这没有很好的记录,但我们可以非常简单地触发任何类型的事件。

这个例子将触发50双击按钮:

let theclick = new Event(“dblclick”) for (let i = 0;i < 50;i++){ action.dispatchEvent(theclick) } <button id=“action” ondblclick=“out.innerHTML+='Wtf '”>TEST</button> <div id=“out”></div>

The Event interface represents an event which takes place in the DOM. An event can be triggered by the user action e.g. clicking the mouse button or tapping keyboard, or generated by APIs to represent the progress of an asynchronous task. It can also be triggered programmatically, such as by calling the HTMLElement.click() method of an element, or by defining the event, then sending it to a specified target using EventTarget.dispatchEvent(). https://developer.mozilla.org/en-US/docs/Web/API/Event

https://developer.mozilla.org/en-US/docs/Web/API/Event/Event

上面的答案是最好的!然而,当etype = 'click'时,它并没有为我在Firefox中触发鼠标事件。

所以,我修改了文档。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.
    } 
  }
}
document.getElementById("element").click()

只需从DOM中选择元素。该节点具有单击函数,您可以调用该函数。

Or

document.querySelector("#element").click()
document.getElementById('elementId').dispatchEvent(new MouseEvent("click",{bubbles: true, cancellable: true}));

按照这个链接了解鼠标事件使用Javascript和浏览器兼容性相同

https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent#Browser_compatibility