Почему коды Javascript не запускаются в пользовательском контроле? - PullRequest
1 голос
/ 12 сентября 2009

Я работаю над проектом, который содержит одну страницу (home.aspx).

Home.aspx содержит ScriptManager и UpdatePanel & mdash; div с некоторыми LinkButtons, которые загружают связанные UserControls.

Некоторые из этих пользовательских элементов управления содержат JavaScript. Моя проблема заключается в том, что JavaScript не запускается вовремя (после нажатия кнопки LinkButton или UC загрузки).

Как мне решить эту проблему?

Ответы [ 3 ]

1 голос
/ 12 сентября 2009

Убедитесь, что ваш скрипт зарегистрирован в ScriptManager .

0 голосов
/ 12 сентября 2009

Спасибо за ваши ответы, но я рассмотрел это решение. Пользовательские элементы управления не имеют диспетчера сценариев, диспетчера сценариев, размещенного в Home.aspx. Я использую оба Page.RegisterClientScriptBlock, Page.RegisterStartupScript, ... Но они не работают должным образом. Коды Java-скриптов в UC находятся в теге Script в верхней части UC, как показано ниже:

                   function pageLoad() {
   $addHandler($get("<%=Button2.ClientID%>"), 'click', cp);

}
function cp () {

  /* Do shomthing ... */

}

// * ################ КОНЕЦ КОДОВ JAVASCRIPT

В приведенном выше коде JS Button2 - кнопка asp, помещенная в UC. Сегодня я нахожу новую вещь: если добавить тег defer = 'defer' в приведенном выше теге Script, он работает как шарм! Но это решение для ТОЛЬКО IE, так что это не лучшее решение. Что я могу сделать больше ...?

0 голосов
/ 12 сентября 2009

Если пользовательские элементы управления имеют встроенный JS, он не будет работать; JavaScript, добавленный путем установки innerHTML элемента (что и делает UpdatePanel), не запускается.

Как упоминает Рик Шотт, если пользовательские элементы управления регистрируют свой сценарий с помощью ScriptManager - либо включив asp:ScriptReference s в свои ScriptManagerProxy, либо добавив его из своего кодового кода, используя один из вариантов ScriptManager.Register* - это побежит.

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