Opera是否默认捕获事件以及正确的行为是什么?

时间:2011-09-01 19:52:14

标签: javascript events opera addeventlistener

我有一些事件代码在Opera中失败了,我把它剥离到了this small testcase

基本上问题是如果未设置addEventListener的第三个参数,则事件处理程序不会在Opera中运行。当单击“useCapture not set” - 按钮时,测试用例中的值在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,参数根本不是可选的,或者我缺少什么?什么是正确的行为?

2 个答案:

答案 0 :(得分: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完全有权坚持它。

答案 1 :(得分:0)

DOM Level 3 Events相比的差异是一个错误,将在Opera 12中修复。

相关问题