您如何以编程方式确定HTML对象可以侦听哪些事件?

tko*_*one 8 javascript safari dom gecko webkit

我一直在查看developer.mozilla.org和Apple开发文档中的文档,但是我无法找到解释您是否可以以编程方式确定特定HTML标记是否支持给定eventListener的文档.

就像我知道<script>标签不会支持点击监听器,因为没有什么可点击,但我怎么知道?

或者除此之外,是否有一个简单的参考,每个标签支持哪些事件?

sdl*_*rhc 5

根据Perfection Kills的说法,在一些边缘案例之外,是的,你可以:

诀窍在于许多现代浏览器将与事件名称对应的属性报告为存在于元素中.

基本上,代码看起来像这样:

'onclick' in document.documentElement; // true
'onclick2' in document.documentElement; // false
Run Code Online (Sandbox Code Playgroud)

他使用它来检测各种浏览器中的事件支持,但它也可用于检测元素是否支持事件:

必须在可能实际发起该事件的元素上检查事件.

所以你也得到这样的结果:

'onreset' in document.documentElement; // false
'onreset' in document.createElement('input'); // true
Run Code Online (Sandbox Code Playgroud)