2011-08-08 9 views
0

私たちのアプリケーションには、他のすべてのページが派生する基本ページがあります。アプリケーションの使用状況を追跡するために、各ページリクエストごとにデータベースにレコードを挿入しています。今、私たちは、ページがレンダリングされた後からデータの一部を記録したいと思いますので、私たちは、経由ページにいくつかのJavaScriptを注入された:これはウィンドウの言ういくつかのjQueryを使ってスクリプトを注入ベースページからの非同期ポストバックでのjavascriptの挿入

ScriptManager.RegisterStartupScript(this, this.GetType(), "readyTime", sReady, true); 

.loadイベントが発生すると、Webサービスにデータを送信して、ページがクライアントにダウンロードされてレンダリングされた時間を知ることができます。

初期ページ要求時に機能しますが、非同期ポストバックでは機能しません。私はの効果にコードを追加しました:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
function EndRequestHandler(sender, args) 
{ 
    // webservice call here 
}"; 

問題は、非同期コードは、非同期ポストバックの最後に火を行いますが、それは、ログエントリのために使用するキーは、intial上のものと同じである、です要求。ページのjavascriptには、ページが生成されたときにキーが与えられ、javascriptは更新されていません。私はブレークポイントを設定し、ScriptManager呼び出しは実行されていますが、ページ上のスクリプトは各ポストバック後も同じままです。

これが可能なら誰でも知っていますか?

編集:私はこのポストを見た:Client side script won't execute with ScriptManager 私はベースページにあるので、私は正確にポストバックを引き起こしたコントロールを見つけることができるか分からない。 (時にはそれがユーザーコントロールまたはグリッドに埋もれていますので、私は、__EVENTTARGETは動作しませんでした使用してみました、少なくともコード)

答えて

0

のScriptManagerを使用している場合、あなたは次のスニペット

if(ScriptManager.GetCurrent(this.Page).IsInAsyncPostBack) 
{ 
    ... 
} 
+0

を使用することができますしかし、私はそれが非同期ポストバックを知っています。私はちょうど非同期ポストバックの新しいキーでJavaScriptを更新する必要があります。 JavaScriptのキーは決して変更されません。 – LoveMeSomeCode

関連する問題