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