如何在 JS/Mootools 中实现 OnDestroy/OnDispose 事件?

Alp*_*Dev 6 javascript events mootools

JavaScript 中是否存在任何现有的 OnDestroy/OnDispose 事件,或者纯 JS 或 Mootools 中是否存在任何已知的自定义实现?假设我想在元素从 DOM 中销毁/删除时调用 console.log('bye') 。类似于这个jQuery 解决方案的东西

Dim*_*off 4

虽然您可以这样做,但这样做并不实际。

首先 -destroy事件 fill 触发正在被销毁的元素的上下文,此时在事件 cb 期间,它将被删除并可能被 GCd 。

其次,IE6,7,8,其中 Element 原型是只读的,元素通过$/本地添加到它们的方法document.id- 意味着需要在 DOM 中访问任何内容之前加载装饰方法。

第三,如果说的话,这实际上不会触发,el.parentNode.innerHTML = ''或者它们通过原始js/替代方式被删除。从这个意义上来说,它不是一个真正的观察者,只是捕获了两种方法。

http://jsfiddle.net/5YYyb/1/

(function(){
    // old methods
    var destroy = Element.prototype.destroy,
        dispose = Element.prototype.dispose;

    // redefine them and fire the events before calling old protos.
    [Element, Elements].invoke('implement', {
        destroy: function(){
            this.fireEvent('destroy');
            return destroy.apply(this, arguments);
        },
        dispose: function(){
            this.fireEvent('dispose');
            return dispose.apply(this, arguments);
        }
    });
}());


var foo = document.getElement('.foo');
foo.addEvents({
    dispose: function(){
        alert('we are not in the dom now');
    }
});

foo.dispose();
Run Code Online (Sandbox Code Playgroud)