【问题标题】:ASP.Net AJAX multiple pageLoad functions possible?ASP.Net AJAX 多个 pageLoad 功能可能吗?
【发布时间】:2010-11-02 13:20:54
【问题描述】:

我有一个注入 javascript pageLoad 函数的 ASP.Net 控件。我也有一个pageLoad 直接在页面上的功能。我似乎无法让他们俩都开火。您是否仅限于 javascript 中具有相同名称的单个函数?

【问题讨论】:

    标签: asp.net javascript ajax


    【解决方案1】:

    我不得不不同意 Shog9...

    我知道在一个文档中可以有多个 $(document).ready(f(n)) 调用,每个调用在 DOM 完成加载时依次调用。我不相信多次调用 ClientScript.RegisterStartupScript() 也不会导致任何问题。

    【讨论】:

    • Josh,您说的是 jQuery,它支持将多个处理程序绑定到单个事件。他说的是全局 pageLoad 函数的内置 ASP.NET AJAX 自动绑定。虽然 ASP.NET AJAX 还支持将多个处理程序绑定到单个事件,但这并不会改变底层语言不支持多个同名函数的事实!
    • 啊好点!我在原始帖子中错过了这一点。感谢您对此进行纠正
    【解决方案2】:

    是的...与大多数语言一样,JavaScript 要求符号在其范围内是唯一的。在 JavaScript 中,如果您在给定范围内为函数创建多个定义,那么最后一个定义“获胜” - 就好像以前的定义从未存在过一样。

    为了使多余的pageLoad 函数正常工作,您需要做的是使用Sys.Application.add_load() 方法。使用它,您可以将任意数量的处理程序附加到页面加载事件。更重要的是,您可以使用匿名函数在add_load 方法中添加。这样做将保证您不会有重复名称的处理程序的危险。示例:

    StringBuilder sb = new StringBuilder();
      sb.Append("Sys.Application.add_load(");
      sb.Append("function() { alert('page load'); });");
    
    ClientScript.RegisterStartupScript(this.GetType(), "Page_Load", sb.ToString(), true);
    

    您可以在客户端轻松使用Sys.Application.add_load,甚至可以多次添加相同的处理程序。这将导致多次触发相同的功能:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      相关资源
      最近更新 更多