3

我看到有关如何创建自定义事件的其他问题,但我不清楚如何跟踪特定的自定义条件。

在我的示例中,我需要“监听”数组从 x 元素变为 y 元素的可能性。

我不确定在 Array 之上进行原型设计是否是一个好主意,尽管这正是我所需要的。

然而,更广泛的问题是,编写自定义侦听器的方法是什么,这些侦听器实际上类似于 -pseudo-

onClockStruckTwo 或 onDomChanged 或 onRapture

这意味着,与其等待其他一些预定义的 onEvent(onclick、onkeydown 等)发生,我想自己做。

请不要框架答案。我试图了解这在本机 javascript 中实际上是如何工作的。

TIA

4

2 回答 2

0

数组没有任何类型的事件通知系统来处理 javascript 的变化。因此,如果您想知道数组何时更改,则必须创建自己的通知系统。

由于您不想使用任何框架(其中许多提供事件通知和触发事物),因此您必须构建自己的框架。

事件系统有几种不同的方法(通过通用消息回调的消息,每个事件的单独回调,这些中任何一个的面向对象的方法,等等......

最直接的(认为不一定是最优雅的)是让创建事件的对象维护事件的回调列表。然后,当感兴趣的一方想要注册事件时,他们调用一个方法并将事件和回调传递给它。这类似于 addEventListener 在浏览器 DOM 中为 DOM 事件工作的方式。该方法调用的接收者然后将回调存储在回调数组中。一段时间后,当实际事件发生时,会依次调用为该事件注册的每个回调。

由于数组修改本身不会触发事件,因此您必须实现一个既使数组更改又发出事件信号的函数。

于 2012-08-28T03:11:55.033 回答
0

我问你的问题是“你在听什么?” 如果您正在收听服务器上的更改,则可以setTimeout进行 AJAX 调用,但这远非建议。如果您严格要求元素的长度发生变化,那么您必须知道其他一些东西会引发事件。我说如果它与服务器无关,根本不要“听”,只需将所需的 Javascript 代码附加到您知道会触发事件更改的内容的末尾。

编辑

这是所有 Javascript 事件类型的列表。我没有看到任何提到 DOM 对象是空的。您可以按照您希望的方式进行SOL 。

于 2012-08-28T03:01:57.593 回答