我知道有些浏览器通过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属性以及它们应用于的对象。

请注意,这不包括触摸界面。有两点要注意。

  • 在HTML5或Touch Events规范中,不需要ontouchstartontouchend等事件处理程序,并且实际上不需要使用触摸事件,因为可以使用addEventListener将侦听器与事件类型进行匹配。
  • 没有什么可以阻止新的或更新的规范添加对此类事件的事件处理程序的要求,也不会阻止浏览器在规范中对其进行记录之前实现此类处理程序的浏览器。

  • 因此,if ("ontouchstart" in document)不是一个很好的测试。也许测试触摸支持的更好方法是创建一个TouchEvent并检查其类型。

    顺便提一下,对比the Touch events spec(未提及事件处理程序)和更多提供a list of event handlers for pointer events的硬件不可知指针事件规范

    07-26 04:16