我一直在寻找最合适的方法来附加DOM事件,避免浏览器兼容性问题,并发现Mozilla developers网站声明:
旧的方法就是这样分配:
document.getElementById('cupcakeButton').onclick = getACupcake;
如上所述,事件对象是全局对象或参数。这个 方法可能有问题,不是首选方法,但它仍然存在 工作,很多人仍然使用它。
这涉及哪些类型的问题?
答案 0 :(得分:1)
我能想到的最大问题是它不允许分配多个点击处理程序,通过执行另一个.onclick = fn;
你基本上解除了前一个处理程序的绑定(如果它在那里)。
即使神奇地工作,你也无法取消注册特定的处理程序;它是全有或全无。
答案 1 :(得分:1)
最明显的一个是it would replace a previously assigned handler。
document.getElementById('id')
应该适用于所有浏览器,除非是真正的旧浏览器(Netscape 4-
, IE 4-
),您应该分别使用document.layers['id']
和document.all[id]
。
IE 5 up to IE 7
have one more issue,他们也会返回name='id'
而不是id='id'
元素的元素。那可能真的让你失望。
查看jQuery以了解如何附加DOM事件处理程序以避免浏览器兼容性问题。