当前位置:  开发笔记 > 编程语言 > 正文

是否可以通过JavaScript触发链接(或任何元素)的点击事件?

如何解决《是否可以通过JavaScript触发链接(或任何元素)的点击事件?》经验,为你挑选了1个好方法。

我正在编写一些需要click为链接触发事件的JavaScript代码.在Internet Explorer中,我可以这样做

var button = document.getElementById('myButton');
button.click();

但这在Firefox中不起作用,我假设任何其他浏览器.在Firefox中,我做到了这一点

var button = document.getElementById('myButton');
window.location = button.href;

我觉得这不是最好的方法.有没有更好的方法来触发click事件?优选地,无论元素类型或浏览器如何都可以工作.



1> Chris MacDon..:

http://jehiah.cz/archive/firing-javascript-events-properly

function fireEvent(element,event) {
   if (document.createEvent) {
       // dispatch for firefox + others
       var evt = document.createEvent("HTMLEvents");
       evt.initEvent(event, true, true ); // event type,bubbling,cancelable
       return !element.dispatchEvent(evt);
   } else {
       // dispatch for IE
       var evt = document.createEventObject();
       return element.fireEvent('on'+event,evt)
   }
}


为什么否定`element.dispatchEvent()`的返回值?两个[`element.dispatchEvent`](https://developer.mozilla.org/en/DOM/element.dispatchEvent)和[`element.fireEvent`](http://msdn.microsoft.com/en-us/ library/ms536423%28VS.85%29.aspx)如果事件被取消则返回false,否则返回true.
根据经验,通常最好首先检查标准功能(例如`createEvent`),然后再检查专有功能(例如`createEventObject`).
推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有