我一直在寻找最合适的方式来附加 DOM 事件以避免浏览器兼容性问题,并发现Mozilla 开发人员网站指出:
旧的方法是像这样分配它:
document.getElementById('cupcakeButton').onclick = getACupcake;
如上所述,事件对象要么是全局的,要么是参数。这种方法可能有问题,不是首选方法,但它仍然有效,很多人仍在使用它。
这指的是什么类型的问题?
我一直在寻找最合适的方式来附加 DOM 事件以避免浏览器兼容性问题,并发现Mozilla 开发人员网站指出:
旧的方法是像这样分配它:
document.getElementById('cupcakeButton').onclick = getACupcake;
如上所述,事件对象要么是全局的,要么是参数。这种方法可能有问题,不是首选方法,但它仍然有效,很多人仍在使用它。
这指的是什么类型的问题?
我能想到的最大问题是它不允许分配多个点击处理程序,通过做另一个.onclick = fn;
你基本上取消绑定以前的处理程序,如果它在那里。
即使这很神奇,您也无法取消注册特定的处理程序;要么全无。
已经提到了最明显的一个,它将替换先前分配的处理程序。
document.getElementById('id')
应该在所有浏览器中工作,除了非常旧的浏览器(Netscape 4-
,IE 4-
),你应该分别使用document.layers['id']
和document.all[id]
。
IE 5 up to IE 7
还有一个问题,那就是它们还将返回元素 wherename='id'
而不是仅返回元素 where id='id'
。那真的可以让你吃饱。
查看jQuery以获取附加 DOM 事件处理程序以避免浏览器兼容性问题的方法。