11

ASP.NET MVC を使用してサイトを構築しています。jQuery を使用してさまざまなことを行う部分ビューがあります。Google の AJAX API に切り替えて、そのローダーを使用して jQuery をロードすることを考えていました。$(document).ready()しかし、 Google のローダーは callback を指定しているため、もう使えないことに気付きましたgoogle.setOnLoadCallback()

$(document).ready()親ビューに認識させたくない、自分自身に固有のさまざまなことを行うため、さまざまな部分ビューを持っているため、これは私にとって少し問題です。

$(document).ready()複数のコールバックを指定して、 をと交換することはできますgoogle.setOnLoadCallback(someUniqueCallbackFunction)か?

それがこの状況を処理する理想的な方法でしょうか、それとも他に好ましい方法はありますか?

4

3 に答える 3

32

はい、setOnLoadCallback代わりに使用できます$(document).ready。コールバック関数をいつ呼び出すかを指定する文書化されていない 2 番目のパラメーターがあります (少なくとも、私には見つかりません)。可能な値は "false" (デフォルト) - ウィンドウの読み込み時、または "true" - DOM の読み込み時 (DOMContentLoaded) です。DOM イベントは、すべてのマークアップが読み込まれると発生します (window.load よりもかなり前)。window load イベントは、すべての画像やスクリプトなどの読み込みが完了した後に発生します。

// Very similar to $(document).ready()
google.setOnLoadCallback( OnLoad, true );

// Very similar to $(window).load()
// Same as google.setOnLoadCallback( OnLoad, false );
google.setOnLoadCallback( OnLoad );

はい、1 つのページで setOnLoadCallback を複数回使用できます。これは、AJAX API の文書化されていない非常に重要な機能です (この記事の時点では文書化されていません)。setOnLoadCallback を呼び出すたびに、DOM またはウィンドウが読み込まれると呼び出されるすべての関数がスタックされます。

于 2009-10-27T07:35:41.473 に答える
2

私は同じ問題に遭遇しました。私はグーグルで1ページに2つのグーグル検索を実行しています...

結局、私はこれを見つけました、そして私は本質的に1ページにグーグル検索結果を表示する2つのパネルが欲しかったので。

google.setOnLoadCallback(LoadGoogleNewsResults);
google.setOnLoadCallback(LoadGoogleNewsResultsForum);

これは私のために働いた:)

コードはhttp://login.debt-line.org.ukにあり、[ソースの表示]をクリックするだけです。

于 2010-07-20T12:53:17.290 に答える
0

ここで要点を見逃しているかもしれませんが、ユーザーコントロール$(document).readyと私が知っているgoogle.setOnLoadCallbackの間に衝突はありません。

googleを使用してjqueryをロードしているとすると、$(document).readyのコードは、googleがjqueryをロードするまで実行されません。

jQueryがマスターページに読み込まれている限り、問題が何であるかはわかりません。

于 2009-09-05T16:13:28.730 に答える