2009-09-04 10 views
10

ASP.NET MVCを使用してサイトを構築しています。さまざまなことを行うためにjQueryを使用する部分的なビューがあります。私はGoogleのAJAX APIに切り替え、ローダーを使ってjQueryを読み込むことを考えていました。しかし、Googleのローダ​​がコールバックgoogle.setOnLoadCallback()を指定しているため、もはや$(document).ready()を使用できなくなることに気付きました。google.setOnLoadCallbackを何度も使用できますか?

親ビューに気付かないように自分自身に固有のさまざまなことを行うため、これは私が$(document).ready()をさまざまな部分的な視点で持っているため、これは少し問題です。

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

これは、このような状況を処理する理想的な方法ですか、それとも他に優先されることがありますか?

+0

これらの部分表示の場合は、ページやダイナミクスでレンダリングしていますか(ajaxタブなど)? – jmarnold

+0

通常のページです。私はこの時点でAJAXを使用していません。 – Joseph

答えて

0

私はここでのポイントを逃してもよいが、私の知って.readyとgoogle.setOnLoadCallbackあなたのユーザーコントロールの$(ドキュメント)の間には衝突はありません。 Googleはとにかくjqueryのをロードするまで.readyが実行されませんあなたは、jQueryの$(文書)でコードを読み込むためにGoogleを使用していると仮定すると、

限りjQueryのは、あなたのマスターページにロードされているようではなく、問題が何であるかを確認してください。

+0

私はそれを試して、それが動作するかどうかを見てみましょう。私はsetOnLoadCallbackと$(document).readyをGoogle APIプレイグラウンドの同じhtmlファイルで使用しようとしましたが、それは好きではありませんでした。しかし、私はユーザーコントロールで大丈夫でしょうか? – Joseph

+1

これはうまくいくようです。私はgoogle.load(jquery)を使用して、後で私は$(document).readyを使用しているし、うまく動作しているマスターファイルを持っている! – Joseph

32

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

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

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

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

+0

これは私を助けたものです。私はこれがより良く文書化されたことを望む。 – mdoar

+0

あなたはちょうど私の日を作った。 – Wistar

+0

'setOnLoadCallback'を複数回呼び出すことができるようになりました(https://developers.google.com/chart/interactive/docs/basic_multiple_charts)。 – GSerg

1

同じ問題が発生しました。私は私がこれを発見し、私は基本的に1つのページにGoogle検索の結果を示す2枚のパネルを持っていると思ったので、最後に...など、1つのページに実行されている2 Google検索を持っている

をGoogleで検索しました。

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

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

をコードがhttp://login.debt-line.org.uk上で、単にソースを表示]をクリックします。

関連する問題