1

'DOMSubtreeModified'を使用していると、複数の、場合によっては30以上のイベントが発生します。最後のDOMSubtreeModifiedが起動されたときにのみ関数が呼び出されるようにすることは可能ですか?

4

1 に答える 1

5

ケビンBの言及されたスロットルの実装:

function throttle( fn, time ) {
    var t = 0;
    return function() {
        var args = arguments,
            ctx = this;

            clearTimeout(t);

        t = setTimeout( function() {
            fn.apply( ctx, args );
        }, time );
    };
}

document.addEventListener("DOMSubtreeModified", throttle( function() {
    //code
}, 50 ), false );

可能であれば、コードをDOMミューテーションイベントから独立させてください。これらはevalよりも邪悪であり、組み合わせて使用​​するためです。

于 2012-08-08T15:09:13.367 に答える