我试图弄清楚 DOM 如何跟踪事件处理程序,无论是通过使用 jQuery、addEventListener 还是通过 HTML 属性(例如 onload="myFunc()")绑定。
我读过 jQuery 使用 .data() 方式来存储由 jQuery 绑定的事件处理程序......但是其他的呢?他们去哪里?我知道 Webkit 的检查器工具通过检查元素选项卡中的元素来显示事件侦听器,但是它从哪里获取这些信息?
顺便说一句,在使用 Chrome 的 web 检查器进行的一些测试中,我使用控制台通过拉入标签将实时站点上的 jQuery 版本替换为较新的版本<script>
,从而覆盖jQuery
和$
变量。显然,替换之前使用 jQuery 绑定的事件丢失了,因为在这个过程中引入了一个新的 .data() 接口。
然而,那些“丢失”的处理程序仍然绑定到某些事件,因为它们实际上最终会在事件触发时被调用。假设我想完全删除它们,或者用我自己的处理程序取代它们?这就是为什么我想知道如何在 DOM 保存它们的地方访问实际的处理程序......并且没有 jQuery。