Да ... Как и большинство языков, 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
на стороне клиента, вы даже можете добавлять один и тот же обработчик более одного раза. Это приведет к запуску одной и той же функции несколько раз:)