我知道有些浏览器通过onXYZ
中定义的document
属性提供受支持的HID事件,以便可以测试例如通过测试获得触摸支持
if ("ontouchstart" in document) {
...
}
问题是:哪个规范定义一个元素应包含这些
onXYZ
属性?这个问题是而不是:我可以使用它,我应该使用它,哪个浏览器支持这个...
我浏览了几乎所有与DOM相关的事件规范,
但没有发现任何痕迹。
更新:澄清:
我正在寻找这样的规范用语:
Interface MouseEvents:
onmousedown: null; // define to tell there is a mousedown events can can be listened to
onmouseup: null;
...
DomElement implementes MouseEvents:
...
最佳答案
名称以“on”开头,后接事件类型名称的对象上的属性称为“事件处理程序IDL属性”。请注意,事件处理程序与事件侦听器不同。
Section 7.1.5.2.1 of HTML5.1列出了事件处理程序IDL属性以及它们应用于的对象。
请注意,这不包括触摸界面。有两点要注意。
ontouchstart
,ontouchend
等事件处理程序,并且实际上不需要使用触摸事件,因为可以使用addEventListener
将侦听器与事件类型进行匹配。 因此,
if ("ontouchstart" in document)
不是一个很好的测试。也许测试触摸支持的更好方法是创建一个TouchEvent并检查其类型。顺便提一下,对比the Touch events spec(未提及事件处理程序)和更多提供a list of event handlers for pointer events的硬件不可知指针事件规范