我有一个ASP.Net控件注入一个JavaScript pageLoad函数。我也有一个pageLoad功能直接在页面上。我似乎不能让他们两个火。您是否只限于JavaScript中具有相同名称的单个函数?
解决方法
是…像大多数语言一样,JavaScript要求符号在其范围内是独一无二的。在JavaScript中,如果为给定范围内的函数创建多个定义,则要定义的最后一个定义“wins” – 就像以前的定义不存在一样。
您需要做什么,为了使您的冗余页面加载功能正常工作,是使用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,甚至可以多次添加相同的处理程序。这将导致多次发射相同的功能:)