ページにscriptmanager、updatepanelが含まれているかどうか、または__doPostBackが更新パネルから呼び出されているか部分的なpostbackであるかをjavascriptから判断する方法はありますか?
3 に答える
1 つの更新パネルが呼び出されると、JavaScript 側からトリガーされる 2 つの関数があります。この関数内で、この更新をトリガーするパネルの 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 が存在するかどうかを知る方法を正しく説明してください。
私が正しく理解している場合、ここに2つの質問があります。
(1)JavaScriptでScriptManagerがページに存在するかどうかを確認するにはどうすればよいですか?
サーバー側のページにScriptManagerが含まれている場合、クライアントで利用可能なPageRequestManagerがあります。あなたはそれが存在するかどうかを発見することができます:
var haveScriptManager = window.Sys && Sys.WebForms && Sys.WebForms.PageRequestManager;
(2)__doPostBackが同期しているかどうかを確認するにはどうすればよいですか?
ローカルのPageRequestManagerへのハンドルを取得したら、すべてのポストバックの前に発生するイベントをフックして、同期か非同期かを確認できます。繰り返しになりますが、PageRequestManagerのドキュメントには、その方法の詳細がすべて記載されています。