私が理解していることから、History.jsはHTML5 History/State APIsのポリフィルです。したがって、最新のブラウザーでは、URL の変更をリッスンするために単純にpopstateを使用する必要があります。では、なぜ最新の Chrome で 250 ミリ秒ごとにタイマーが起動するのを確認できるのでしょうか。とても無駄に思え、数秒ごとにガベージコレクターをトリガーします。
この公式のHistory.js デモ をご覧ください。
私が理解していることから、History.jsはHTML5 History/State APIsのポリフィルです。したがって、最新のブラウザーでは、URL の変更をリッスンするために単純にpopstateを使用する必要があります。では、なぜ最新の Chrome で 250 ミリ秒ごとにタイマーが起動するのを確認できるのでしょうか。とても無駄に思え、数秒ごとにガベージコレクターをトリガーします。
この公式のHistory.js デモ をご覧ください。
History.js コードはわかりませんが、それを読んで、@apsillers は正しいと思います。
キュー アイテム間の間隔は 250 ミリ秒に設定されています。そのキュー内のキューに入れられた関数の中には、履歴状態を取得する必要があるものがあります。これらの項目は、フラッシングをビジー状態にすることで強制的に一時停止します。
なぜこれが HTML5 ブラウザーでも発生するのかというと、History.JS は、HTML5 の場合にスイッチを切り替えるだけではなく、何もしないということです。彼らのgithubでは、彼らの目的の 1 つを次のように述べています。
すべての HTML5 ブラウザーに相互互換性のあるエクスペリエンスを提供します (それらはすべて、HTML5 History API の実装が少し異なり、異なる動作やバグを引き起こすことがあります。History.js はこれを修正して、HTML5 ブラウザー全体でエクスペリエンスが期待どおり/同じ/優れていることを保証します)。
History.js がまだキューイングを伴う作業を行っている場合は、ビジー タイムアウトを使用すると思います。