2011-08-08 39 views
0

我們的應用程序中有一個基頁,所有其他頁面派生自。我們一直在數據庫中爲每個頁面請求插入一條記錄來跟蹤應用程序使用情況。現在,我們想也記錄一些數據從頁面已經呈現後,所以我們通過注入一些JavaScript到頁面:從基礎頁面向異步回發注入JavaScript

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

這將給一些jQuery的腳本,上面寫着「當窗.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