私たちのアプリケーションには、他のすべてのページが派生する基本ページがあります。アプリケーションの使用状況を追跡するために、各ページリクエストごとにデータベースにレコードを挿入しています。今、私たちは、ページがレンダリングされた後からデータの一部を記録したいと思いますので、私たちは、経由ページにいくつかの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は動作しませんでした使用してみました、少なくともコード)
を使用することができますしかし、私はそれが非同期ポストバックを知っています。私はちょうど非同期ポストバックの新しいキーでJavaScriptを更新する必要があります。 JavaScriptのキーは決して変更されません。 – LoveMeSomeCode