Mad*_*r X 12 javascript events internals spidermonkey
特别是蜘蛛侠.
我知道你编写函数并将它们附加到事件来处理它们.
onClick处理器定义在哪里以及JS引擎onClick在用户单击时如何知道触发事件?
任何关键字,设计模式,链接等都是值得赞赏的.
UPDATE
聚合我认为有用的链接:
http://www.w3.org/TR/DOM-Level-2-Events/events.html
https://github.com/joyent/node/blob/master/src/node_events.cc
http://mxr.mozilla.org/mozilla/source/dom/src/events/nsJSEventListener.cpp
SpiderMonkey本身没有涉及事件处理的任何事情.事件纯粹是DOM的事情.
click事件由浏览器代码(嵌入SpiderMonkey的东西)触发,而不是由SpiderMonkey本身触发.请参阅http://hg.mozilla.org/mozilla-central/file/e60b8be7a97b/content/events/src/nsEventStateManager.cpp,了解负责调度点击等内容的代码.
浏览器也定义了setter方法,它们对onclick属性进行赋值并将其转换为事件侦听器注册.请参阅http://hg.mozilla.org/mozilla-central/file/e60b8be7a97b/dom/base/nsDOMClassInfo.cpp#l7624,nsEventReceiverSH::SetProperty该名称来自并处理其名称(id在此代码中)通过IsEventName测试的属性.
注册事件侦听器并触发事件时,事件调度程序管理对侦听器的调用; nsJSEventListener您找到的链接是将C++ HandleEvent调用转换为对JS函数的调用的粘合剂.
因此,在您的情况下,您需要为侦听器提供某种注册/取消注册机制,然后您的实现将触发事件并将它们分发给侦听器.你如何做到这一点最后一部分是非常开放的; 由于需要实现DOM Events规范,Gecko实现有很多限制,但是你应该能够做更简单的事情.
| 归档时间: |
|
| 查看次数: |
5466 次 |
| 最近记录: |