【问题标题】:Documentation of html dom Event object?html dom 事件对象的文档?
【发布时间】:2012-05-25 02:17:41
【问题描述】:

谁能指出我的 html Event 对象的文档?


阅读奖励

我知道全局Event 对象存在的唯一原因是a Stackoverflow answer 中提到了它:

onclick="SomeEvent(this, event)"

function SomeEvent( el, event ) {
    var target = event.srcElement || event.target;

    if( el === target ) {
        // run your code
    }
}

它似乎有属性的地方:

  • srcElement
  • target

四处搜索,我在HTML DOM Event object 上找到了 W3 School 的页面,其中列出了以下属性

  • bubbles: 返回事件是否为冒泡事件
  • cancelable:返回事件是否可以阻止其默认操作
  • currentTarget:返回事件监听器触发事件​​的元素
  • eventPhase:返回当前正在评估事件流的哪个阶段
  • target 返回触发事件的元素
  • timeStamp 返回创建事件的时间(相对于纪元的毫秒数) - type 返回事件的名称

方法

  • initEvent():指定事件类型,事件是否可以冒泡,是否可以阻止事件的默认动作
  • preventDefault():如果事件是可取消的,则取消该事件,这意味着实现通常会因为该事件而采取的任何默认操作都不会发生
  • stopPropagation():在事件流期间防止事件进一步传播

缺少srcElement,因此可以肯定地说它不是完整的文档。


然后是微软的page on the event object。它没有任何文档;只提到对象。但它确实提到:

某些属性在某些事件中可能没有有意义的值。例如,fromElementtoElement 属性

W3Schools 页面未提及 fromElementtoElement 属性;所以它不完整。

MSDN 页面引用了 W3C 的链接:

标准信息

Document Object Model (DOM) Level 2 HTML Specification,第 1.6.5 节

那个页面的搜索没有提及fromElementtoElement

那么任何人都可以指出我的 html Event 对象的文档吗?

【问题讨论】:

    标签: html events dom


    【解决方案1】:

    MDN 站点提供了非常可靠的信息:https://developer.mozilla.org/en/DOM/event。您的 event.toElement 属性是非标准的 Microsoft 事物,快速测试显示 Firefox 中的属性为 undefined

    <body onclick="alert(event.srcElement)">Click
    

    要使用的正确属性是target。另请注意,event 不是全局的,它只是一个局部变量。建议您使用 addEventListener 添加 DOM 事件,如 MDN 页面所述。

    quirksmode.org 有很好的跨浏览器兼容性表格。

    W3schools...好吧http://w3fools.com

    由于您想了解更多有关 IE 特定的srcElement 属性的信息,请参阅 Microsoft 的文档。来自srcElement property

    获取事件最初被调度到的元素。与target比较。

    备注

    注意 srcElement 属性是为了向后兼容而提供的。请改用目标属性。

    【讨论】:

    • "global" 我只是说它是全局可用的,而不是必须将它作为其他东西的属性来引用。这样就解释了链接 SO 问题中答案的逻辑srcElement or target 以确保我们得到something)。 Quirksmode 已经过时了大约 6 年(停止在 IE6)
    • event 在您的SomeEvent 示例中不是全局的,它作为参数传递。尽管 quirksmode.org 落后,但如果您想查找古老的信息(例如非标准的 IE 特定属性),它仍然很有用。
    • 是否有关于作为参数传递的其他对象的任何文档?除非 w3fools 有任何信息要添加,否则无需链接到咆哮网站。根据你的解释,srcElement 是 ie-only,它应该是 target,我看到 w3schools 有唯一的 Event 对象引用。
    【解决方案2】:

    Javascript 本身只是一个概念。它融合了不同的方言,如 Jscript 和 Gecko Javascript。现在不同的浏览器对 Javascript 的处理方式不同,因此互联网上有大量不同的文档。

    现在谈谈事件:

    • IE 有两个事件模型
    • Mozilla 和 Safari 两个不同的
    • Opera 有三个

    然后是兼容性:

    • IE DOM0 事件模型的工作方式与其他所有浏览器的 DOM0 事件模型不同
    • IE 专有的 attachEvent 事件模型(Opera 也支持)不同于 W3C DOM2 事件模型
    • Mozilla、Safari 和 Opera 支持 W3C DOM2 事件
    • 与其他三个相比,事件对象在 IE 中具有非常不同的一组属性,与您所讨论的事件模型无关。

    事实上,无论您说的是哪种事件模型,您都会发现四大浏览器在各个方面的差异。这就是为什么您没有找到事件对象的特定全局文档的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-17
      • 2012-12-04
      • 1970-01-01
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 2018-06-23
      • 2023-04-02
      相关资源
      最近更新 更多