У меня есть элемент управления ASP.Net, который вводит функцию javascript pageLoad
. У меня также есть функция pageLoad
непосредственно на странице. Кажется, я не могу заставить их обоих стрелять. Вы ограничены только одной функцией с тем же именем в javascript?
Доступна функция ASP.Net AJAX с несколькими страницами?
Ответ 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
на стороне клиента, вы можете даже добавить один и тот же обработчик несколько раз. Это приведет к срабатыванию одной и той же функции несколько раз:)
Ответ 2
Я должен не согласиться с Shog9...
Я знаю, что возможно иметь несколько вызовов $(document).ready(f (n)) в одном документе, каждый из которых вызывается поочередно, когда DOM заканчивает загрузку. Я не считаю, что несколько вызовов ClientScript.RegisterStartupScript() также вызывают проблемы.