我知道某些浏览器通过onXYZ
中定义的document
属性提供支持的HID事件,因此可以测试例如通过测试获得触摸支持
if ("ontouchstart" in document) {
...
}
问题是:哪个规范定义了一个元素应该包含这些onXYZ
属性?
这个问题不关于:我可以使用它,我应该使用它,哪个浏览器支持这个...
我已经查看了几乎所有DOM,与事件相关的规范
但没有找到痕迹。
我正在寻找这样的规范措辞:
如果浏览器在某些事件上触发
onEVENTNAME
,则应定义名为EVENTNAME
的属性。
Interface MouseEvents:
onmousedown: null; // define to tell there is a mousedown events can can be listened to
onmouseup: null;
...
DomElement implementes MouseEvents:
...
答案 0 :(得分:3)
名称以" on"开头的对象上的属性后跟事件类型名称称为"事件处理程序IDL属性"。请注意,事件处理程序与事件侦听器不同。
Section 7.1.5.2.1 of HTML5.1列出了事件处理程序IDL属性及其应用的对象。
请注意,这并不包含Touch界面。从那里可以得到两点。
在HTML5或Touch Events规范中,没有要求ontouchstart
,ontouchend
等事件处理程序,实际上它们不是必需的使用触摸事件,因为可以使用addEventListener
将侦听器与事件类型匹配。
没有任何事情可以阻止新的或更新的规范为此类事件添加事件处理程序的要求,也不会阻止在规范中记录这些事件之前实现此类处理程序的浏览器。
因此,if ("ontouchstart" in document)
不是一个好的测试。也许更好的测试触摸支持的方法是创建一个TouchEvent并检查它的类型。
顺便提一下,对比the Touch events spec,它没有提到事件处理程序,与更多硬件无关的指针事件规范确实提供了a list of event handlers for pointer events