[英]JavaScript event handling (registering multiple handlers) for non-DOM objects
[英]Setting event handlers to DOM objects
我一直在寻找附加DOM事件的最佳方法,以避免浏览器兼容性问题,并发现Mozilla开发人员网站指出:
旧的方法是像这样分配它:
document.getElementById('cupcakeButton').onclick = getACupcake;
如上所述,事件对象可以是全局对象或参数。 此方法可能有问题,不是首选方法,但它仍然有效,并且许多人仍在使用它。
这指的是什么类型的问题?
我能想到的最大问题是,它不允许通过执行另一个.onclick = fn;
分配多个点击处理程序.onclick = fn;
您基本上取消了先前处理程序的绑定(如果有)。
即使这神奇地起作用了,您也无法注销特定的处理程序。 全部或全无。
已经提到了最明显的一个, 它将替换先前分配的处理程序 。
document.getElementById('id')
应该在所有浏览器中都可以使用,除了真正的旧浏览器( Netscape 4-
, IE 4-
)以外 ,您应该分别使用document.layers['id']
和document.all[id]
。
IE 5 up to IE 7
另一个问题是,它们还将返回name='id'
的元素,而不是仅返回id='id'
的元素。 那真的会让你不知所措。
看一下jQuery,了解一种附加DOM事件处理程序以避免浏览器兼容性问题的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.