Возможно ли использование ASP.Net AJAX нескольких функций загрузки страниц? - PullRequest
15 голосов
/ 12 июня 2009

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

Ответы [ 2 ]

34 голосов
/ 12 июня 2009

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

0 голосов
/ 12 июня 2009

Я должен не согласиться с Shog9 ...

Я знаю, что можно иметь несколько вызовов $ (document) .ready (f (n)) в одном документе, каждый из которых вызывается по очереди, когда DOM заканчивает загрузку. Я не верю, что множественные вызовы ClientScript.RegisterStartupScript () также вызывают какие-либо проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...