Доступна функция ASP.Net AJAX с несколькими страницами?

У меня есть элемент управления ASP.Net, который вводит функцию javascript pageLoad. У меня также есть функция pageLoad непосредственно на странице. Кажется, я не могу заставить их обоих стрелять. Вы ограничены только одной функцией с тем же именем в javascript?

Ответы

Ответ 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() также вызывают проблемы.