[英]Check if page uses asp.net ajax from javascript
有沒有辦法從javascript確定頁面是否包含scriptmanager,updatepanel或者是否從更新面板調用了__doPostBack或者是partialpostback?
當調用一個更新面板時,有兩個函數從javascript端觸發。 在此功能中,您還可以獲取觸發此更新的面板的ID。 如果在更新面板之外有完整的帖子,則需要捕獲表單的提交。
以下是更新面板要更新時觸發的代碼,以及顯示觸發器的更新面板ID的函數。
<script>
if(window.Sys && Sys.WebForms && Sys.WebForms.PageRequestManager)
{
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
}
else
{
// no ScriptManager found
}
function InitializeRequest(sender, args)
{
// get the array of update panels id
var UpdPanelsIds = args.get_updatePanelsToUpdate();
// get the Post ID
args.get_postBackElement().id;
}
function EndRequest(sender, args) {
}
</script>
'Dan Davies Brackett'正確描述了如何知道ScriptManager是否存在。
如果我理解正確,這里有兩個問題:
(1)如何在JavaScript中告訴頁面上是否存在ScriptManager?
如果服務器端頁面包含ScriptManager,則客戶端上將有一個PageRequestManager可用。 你可以發現它是否存在:
var haveScriptManager = window.Sys && Sys.WebForms && Sys.WebForms.PageRequestManager;
(2)如何判斷__doPostBack是否同步?
一旦有了本地PageRequestManager的句柄,就可以掛鈎在每次回發之前觸發的事件,並檢查它是同步還是異步。 同樣, PageRequestManager的文檔將為您提供有關如何執行此操作的所有詳細信息。
將scriptManager clientID發送到某個clientside javascript,然后在頁面上查找它(document.getElementById(emitClientID)
你可以用__NewDoPostBack = __doPostBack重命名__doPostBack,然后創建一個新的函數,如...
__doPostBack = function(whatever arguments __NewDoPostBack takes){
alert("We're doing a post back");
__NewDoPostBack(whatever arguments __NewDoPostBack takes)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.