2

ページにscriptmanager、updatepanelが含まれているかどうか、または__doPostBackが更新パネルから呼び出されているか部分的なpostbackであるかをjavascriptから判断する方法はありますか?

4

3 に答える 3

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 が存在するかどうかを知る方法を正しく説明してください。

于 2012-05-11T16:12:33.747 に答える
1

私が正しく理解している場合、ここに2つの質問があります。

(1)JavaScriptでScriptManagerがページに存在するかどうかを確認するにはどうすればよいですか?

サーバー側のページにScriptManagerが含まれている場合、クライアントで利用可能なPageRequestManagerがあります。あなたはそれが存在するかどうかを発見することができます:

 var haveScriptManager = window.Sys && Sys.WebForms && Sys.WebForms.PageRequestManager;

(2)__doPostBackが同期しているかどうかを確認するにはどうすればよいですか?

ローカルのPageRequestManagerへのハンドルを取得したら、すべてのポストバックの前に発生するイベントをフックして、同期か非同期かを確認できます。繰り返しになりますが、PageRequestManagerのドキュメントには、その方法の詳細がすべて記載されています。

于 2012-05-11T16:08:50.937 に答える