事件处理如何在JavaScript内部进行工作?

具体 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的事情.

点击事件由浏览器代码(嵌入SpiderMonkey的东西)触发,而不是SpiderMonkey本身.请参阅http://hg.mozilla.org/mozilla-central/file/e60b8be7a97b/content/events/src/nsEventStateManager.cpp中的代码,负责调度诸如点击之类的代码.

浏览器还定义了setter方法,它们将赋值给onclick属性并将其转换为事件侦听器注册.请参阅从nsEventReceiverSH :: SetProperty调用http://hg.mozilla.org/mozilla-central/file/e60b8be7a97b/dom/base/nsDOMClassInfo.cpp#l7624,并处理其名称(此代码中的id)通过IsEventName测试的属性.

当事件侦听器被注册并且事件被触发时,事件分派器管理对侦听器的呼叫;您发现的nsJSEventListener链接是将C HandleEvent调用转换为对JS函数调用的粘合.

所以在你的情况下,你想要某种注册/注销机制的监听器,然后你的实现将触发事件并将它们发送到监听器.这最后一部分是如何开放的? Gecko实现由于需要实现DOM Events规范而受到很多限制,但您应该能够做得更简单一些.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...