6

私は現在、さまざまなプラグインやライブラリから、 1 つ以上のsetIntervalタイマーが常に実行されている可能性がある、既存の大規模なコードベースで作業しています。これは基本的に、 Break on Nextを使用して、要素をクリックしたときに何が起こるかをデバッグすることを不可能にします。

問題: [Break on Next] をクリックするとすぐに、必要なイベントを実際にデバッグするためにページを操作する前に、ブラウザー デバッガー (Firebug と Chrome で試行) が setInterval 関数のいずれかで停止します。

具体的な問題: 何度クリックしても、チェックを外すとチェックが外れたままであるチェックボックスがあります。ID とクラス名も無駄に削除しましたが、イベント ハンドラーがアタッチされていないようです。

注:jQueryを使用していません

4

1 に答える 1

1

これは他のことを妨げるかもしれませんが、次のようにそれらの呼び出しをモンキーパッチアウトしようとするとどうなるでしょうか:

window.setInterval = function() { console.log("setInterval", arguments); };
window.setTimeout = function() { console.log("setTimeout", arguments); };

問題を再現するためにタイムアウト/間隔の一部が実際に必要であることがわかった場合は、それらを通過させてみることができます。コードは次のようになります。

window.oldSetTimeout = window.setTimeout;
window.setTimeout = function() { 
    if (arguments[0] == "code you want to allow") {
         oldSetTimeout.apply(null, arguments);
    } else {
         console.log("setTimeout", arguments); 
    }
};

注: モンキー パッチを適用した setTimeout がクロス ブラウザーで機能しないことは驚くことではありませんが、FF 18.0 では機能します。

于 2013-01-28T22:05:38.173 に答える