2011-09-01 40 views
1

我有一些事件代码在Opera中失败,我已将它剥离为this small testcaseOpera是否默认捕获事件,以及正确的行为是什么?

基本上问题是如果没有设置第三个参数addEventListener,事件处理程序不能在Opera中运行。当“useCapture not set” -button被单击时,Firefox中和Chrome中的值增加,但Opera中没有。

此(旧)文章表示Opera不同于webkit &壁虎浏览器: http://my.opera.com/hallvors/blog/2006/10/12/2006-10-12-event-capture-explained。我不知道该怎么做。 MDN表示useCapture应该默认为false

是Opera中默认的true,参数根本不是可选的,或者我缺少什么?什么是正确的行为?

回答

0

如果有疑问,请参阅规格。原来仍然是当前的规范是W3C的DOM Level 2 Events。查看ECMASCript binding page,看起来好像useCapture参数是必需的,因为没有提及它是可选的。

DOM Level 3事件explicitly mentions useCapture as being optional,虽然我不认为这个草案规范曾经在浏览器中被广泛采用。

relevant MDN page也有这样的提示:

注:仅将useCapture在较新版本的 主流浏览器成为可选项;例如,在Firefox 6之前它不是可选的。 您应该提供该参数以实现最广泛的兼容性。

底线:总是传递所有三个参数是最安全的,Opera完全有权坚持它。

+0

我想我没有看全MDN页面不够彻底。谢谢你的明确答案。 –

相关问题