【问题标题】:How do you programmatically determine to which events an HTML object can listen for?您如何以编程方式确定 HTML 对象可以侦听哪些事件?
【发布时间】:2011-10-05 20:47:41
【问题描述】:

我一直在查看 developer.mozilla.org 上的文档和 Apple 开发文档,但我无法找到解释您是否可以通过编程方式确定特定 HTML 标记是否支持给定事件监听器的文档。

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

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

【问题讨论】:

    标签: javascript dom safari webkit gecko


    【解决方案1】:

    根据Perfection Kills,除了少数极端情况之外,是的,您可以:

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

    基本上,代码如下所示:

    'onclick' in document.documentElement; // true
    'onclick2' in document.documentElement; // false
    

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

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

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

    'onreset' in document.documentElement; // false
    'onreset' in document.createElement('input'); // true
    

    【讨论】:

    • 也许这不会完全做你想要的,因为'onclick' in document.createElement('script') 返回true。但这只是意味着,如果你给 <script> 一些 display:block 和其他 CSS 魔法,你可以给它一个点击监听器。此方法报告浏览器在技术上可以支持什么;你可能需要稍微过滤一下它的结果,让它按照你想要的方式工作。
    【解决方案2】:

    我告诉你阅读this

    ...您必须想到的最好的事情是事件仅适用于 DOM 对象。然后 DOM 中的所有对象都可能有事件(​​但请阅读列表)。

    【讨论】:

      猜你喜欢
      • 2011-12-26
      • 2022-06-15
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-24
      相关资源
      最近更新 更多