【问题标题】:How to execute javascript function from code-behind but only after the page loads如何从代码隐藏但仅在页面加载后执行javascript函数
【发布时间】:2016-10-31 01:50:35
【问题描述】:

我找到了关于如何从代码隐藏执行 javascript 函数的其他解决方案。问题是它在页面加载之前触发,所以我无法为其添加逻辑。

if(result)
{
   Page.ClientScript.RegisterClientScriptBlock(typeof(Page), 
                                               "Script", "confirmPwdChange();", true);
}

在客户端

<script>
   confirmPwdChange()
   {
     alert("Password has been successfully changed.");
     //Add more logic here, after user clicks the OK button...
   }
</script>

如果可能,不要使用 Jquery。

感谢您的帮助。

【问题讨论】:

标签: javascript asp.net webforms


【解决方案1】:

您可能希望在脚本文件中包含 window.onload。像这样..

StringBuilder script = new StringBuilder();
script.Append("var existingHandler = window.onload;");
script.Append("window.document.body.onload = function(){ confirmPwdChange(); if (existingHandler){ existingHandler()}}");
Page.ClientScript.RegisterClientScriptBlock(typeof(Page), 
                                           "Script", script.ToString(), true);

这确保您的更改密码在页面加载时被调用,并保留页面上已声明的任何其他现有处理程序。

【讨论】:

  • 我收到此错误:Uncaught SyntaxError: Unexpected token &lt;.
  • 我的错。更正了代码以不包含
  • 现在我收到错误:Uncaught ReferenceError: changePassword is not defined at window.onload
  • 我给出了作为参考的方法名,替换了服务器代码中的changePassword为confirmPwdChange。更新了片段
  • 它执行了,但是与在页面完全加载之前执行的问题相同。显示警报时,页面变为空白然后加载。
【解决方案2】:

我想你在找PageRequestManager

List of PageRequestManager events

var prm = Sys.WebForms.PageRequestManager.getInstance();

// beginRequest: before postback to server
prm.add_beginRequest(BeginRequestHandler);

// endRequest: after postback to server
prm.add_endRequest(EndRequestHandler);

function BeginRequestHandler(sender, args) {
    // do stuff
}

function EndRequestHandler(sender, args) {
    // do stuff
}

【讨论】:

  • 您能否说明如何将其与后面代码中执行的代码的成功/失败联系起来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-15
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
  • 2013-11-10
  • 2021-06-02
  • 2010-10-27
相关资源
最近更新 更多