2009-08-06 6 views
0

()ページの各レディ()のスコープ。私は、関連する部分の先頭に新しいDate()変数を設定し、それが関連する部分の終わりに到達するためにかかった時間を確認し、特定の機能をプロファイリングするための

全体$を測定に関する問題()。準備ができスコープは、それが時には非同期コードの一部を実行することができますし、それがすべて終了し、それが取った時間の長さを表示するにために、私は待つことができないということです。

ページが完全に全ての$()を実行し終えた後に解雇されたすべてのイベントがあります。準備ができてコード?

EDIT:Firebugのを使うか、私も

おかげで私たちのウェブサイトのページの読み込み速度を監視し、グラフのためのウェブサイトのユーザーからこのプロファイル情報を収集する必要があるため、他のクライアントデバッガがオプションではありません!

答えて

1

ready()が非同期関数の処理を完了したことを知ることが事実上不可能であるため、イベントは発生しません。したがって、あなたは自分自身でこの機能を焼く必要があります。 jQueryのカスタムイベントを使用したり、環境をイントロスペクトして他のすべてが完了しているかどうかを判断できるsetInterval()で実行する関数を設定することができます。

0

あなたはFirebugのでプロファイラを使用してみましたか?あなたのスタートとフィニッシュの追跡を行い、元のメソッドを呼び出す関数とjQueryのレディ機能アウト

+0

ユーザーから統計情報を収集する必要があるため、ページの読み込み速度を監視することができます –

1

スワップ。

jQuery.ready = (function() { 
    var original = jQuery.ready; 
    return function() { 
     alert('starting profiler'); 
     original(); 
     alert('ending profiler'); 
    }; 
})(); 

$(function() { 
    alert('this message will appear between the profiler messages above...'); 
}); 
+0

同じ引数を使用してオリジナルを呼び出すことを忘れないでください。 – SolutionYogi

+0

元の引数だけでなく元のスコープも渡すようにコードを修正しました。 – SolutionYogi

+0

なぜですか?準備関数は引数をとりません。これが一般的な解決策であればいい考えですが、jQueryの準備方法を念頭に置いてコード化されています。また、準備メソッドの戻り値をバブルアップするように変更することもできます...ああ、待って、何も返さない... –

関連する問題