1

我一直在寻找最合适的方式来附加 DOM 事件以避免浏览器兼容性问题,并发现Mozilla 开发人员网站指出:

旧的方法是像这样分配它:

document.getElementById('cupcakeButton').onclick = getACupcake;

如上所述,事件对象要么是全局的,要么是参数。这种方法可能有问题,不是首选方法,但它仍然有效,很多人仍在使用它。

这指的是什么类型的问题?

4

2 回答 2

1

我能想到的最大问题是它不允许分配多个点击处理程序,通过做另一个.onclick = fn;你基本上取消绑定以前的处理程序,如果它在那里。

即使这很神奇,您也无法取消注册特定的处理程序;要么全无。

于 2013-05-13T21:52:34.520 回答
1

已经提到了最明显的一个,它将替换先前分配的处理程序

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 事件处理程序以避免浏览器兼容性问题的方法。

于 2013-05-13T22:00:28.873 回答