许多时候需要先执行后台操作进行判断,然后在客户端给用户进行提示。下面的方法比较有效的实现了这一功能。

   /// <summary>

   /// 从后台弹出alert对话框(页面加载完后执行),相当于添加onload事件

   /// </summary>

   /// <param name="msg">提示信息内容</param>

   public static void Prompt(string msg)

   {

       string function = "function Alert(){alert(\"" + msg + "\");}";

       AddLoadEvent(function);

   }

 

   /// <summary>

   /// 执行客户端js函数(页面加载完后执行),相当于添加onload事件

   /// </summary>

   /// <param name="function">

   /// 需要执行的js函数语句

   /// 调用示例:ExecuteClientFunction("fun(para1, para2);")

   /// </param>

   /// <returns></returns>

   public static void ExecuteClientFunction(string statement)

   {

       string function = "function ExecuteClientFunction(){ " + statement + "}";

       AddLoadEvent(function);

   }

 

   /// <summary>

   /// 从后台关闭页面(页面加载完后执行),相当于添加onload事件

   /// </summary>

   public static void ClosePage()

   {

       string function = "function ClosePage(){ window.close(); }";

       AddLoadEvent(function);

   }

 

   /// <summary>

   /// 从后台跳转页面(页面加载完后执行),相当于添加onload事件

   /// </summary>

   /// <param name="url">需要跳转的url</param>

   public static void Redirect(string url)

   {

       string function = "function Redirect(){ window.location.href(\"" + url + "\"); }";

       AddLoadEvent(function);

   }

  

   /// <summary>

   /// 添加onload事件

   /// </summary>

   /// <param name="function">需要添加的方法,该方法不能有参数</param>

   private static void AddLoadEvent(string function)

   {

       string functionName;

       int start = function.IndexOf("function ") + 9;

       int end = function.IndexOf("()");

       functionName = function.Substring(start, end - start).Trim();

 

       string id = Guid.NewGuid().ToString().Replace("-", "");

       string newfunctionName = functionName + id;

       function = function.Replace(functionName, newfunctionName);

       functionName = newfunctionName;

 

       string js = "<script type=\"text/javascript\">" +

                       function +

                       "function addLoadEvent" + functionName + "(){" +

                       "var oldonload = window.onload;" +

                       "if (typeof window.onload != 'function'){window.onload = " + functionName + ";}" +

                       "else { window.onload = function(){ oldonload();" + functionName + "();} } }" +

                       "addLoadEvent" + functionName + "();" +

                   "</script>";

       Page nowp = HttpContext.Current.Handler as Page;

       nowp.ClientScript.RegisterStartupScript(nowp.GetType(), Guid.NewGuid().ToString(), js);

   }

 

相关文章:

  • 2022-12-23
  • 2022-01-06
  • 2021-12-04
  • 2021-06-02
  • 2022-12-23
  • 2021-11-18
  • 2022-01-31
猜你喜欢
  • 2021-08-18
  • 2022-12-23
  • 2022-01-05
  • 2022-12-23
  • 2022-12-23
  • 2021-11-10
  • 2021-11-18
相关资源
相似解决方案