Opera是否默认捕获事件,正确的行为是什么?
Does Opera capture events by default and what is the correct behaviour?
我有一些在Opera中失败的事件代码,我将其简化为这个小测试用例。
基本上问题是,如果没有设置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
,是参数根本不是可选的,还是我错过了什么?什么是正确的行为?
如果有疑问,请参考规范,最初和现在的规范是W3C的DOM Level 2 Events。查看ECMASCript绑定页面,看起来好像useCapture
参数是必需的,因为没有提到它是可选的。
DOM Level 3 Events明确提到useCapture
是可选的,尽管我认为这个规范草案还没有在浏览器中得到广泛采用。
相关的MDN页面也有一个注释:
注意:useCapture仅在最新版本的主流浏览器;例如,在Firefox 6之前,它不是可选的。您应该提供该参数以获得最广泛的兼容性。
底线:始终传递这三个参数是最安全的,Opera完全有权利坚持这样做。
与DOM Level 3 Events相比的差异是一个bug,将在Opera 12中修复。
相关文章:
- 是什么原因导致阻止默认让原始事件通过
- d3.js中日期的默认表示形式是什么
- 默认的工具提示样式是什么
- “require”中的默认根目录是什么
- 2D 数组的默认排序是什么
- 让函数中的接收器默认为全局对象背后的基本原理是什么?
- 当未定义默认导出时,从“模块”导入模块是什么,为什么它与将 * 导入为模块不同
- 在默认情况下将可枚举设置为 false 的 JS 中创建对象属性的其他方法是什么
- XMLHttpRequest 中的默认内容类型是什么
- 来自 TypeScript 模块的 JavaScript IIFE 中的默认参数的目的是什么?
- 默认的主干事件是什么
- iscroll的默认行为是什么
- AppVeyor中的默认时区是什么
- iOS设备处理:hover伪类的默认方式是什么?
- 递归事务中的默认成功 URL 是什么
- 使用jQuery选择器时的默认上下文是什么?
- XMLHttpRequest上async属性的javascript默认值是什么?开放的方法
- Javascript数组——用起始索引和默认值创建数组的最快最有效的方法是什么?
- Opera是否默认捕获事件,正确的行为是什么?
- 浏览器将文件加载到缓存中的默认顺序是什么?