【发布时间】:2010-11-02 13:20:54
【问题描述】:
我有一个注入 javascript pageLoad 函数的 ASP.Net 控件。我也有一个pageLoad 直接在页面上的功能。我似乎无法让他们俩都开火。您是否仅限于 javascript 中具有相同名称的单个函数?
【问题讨论】:
标签: asp.net javascript ajax
我有一个注入 javascript pageLoad 函数的 ASP.Net 控件。我也有一个pageLoad 直接在页面上的功能。我似乎无法让他们俩都开火。您是否仅限于 javascript 中具有相同名称的单个函数?
【问题讨论】:
标签: asp.net javascript ajax
我不得不不同意 Shog9...
我知道在一个文档中可以有多个 $(document).ready(f(n)) 调用,每个调用在 DOM 完成加载时依次调用。我不相信多次调用 ClientScript.RegisterStartupScript() 也不会导致任何问题。
【讨论】:
是的...与大多数语言一样,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,甚至可以多次添加相同的处理程序。这将导致多次触发相同的功能:)
【讨论】: