2009-04-29 5 views
3

У меня есть составной элемент управления на странице ASPX. На странице ASPX загружается Javascript, который загружается перед элементом управления. Теперь, поскольку сценарий относится к элементу управления, который не существует при загрузке сценария, это бросает ошибку Javascript в «Obect not defined». Прикрепление скрипта к событию onload элемента управления дает «Sys not defined».Javascript: ссылка на контроль до загрузки страницы

Любая идея?

Сценарий находится во внешнем файле.

ответ

2

Вы можете сохранить сценарий в методе загрузки вашего элемента управления, хотя он действительно должен быть помещен в PreRender, потому что тогда вы можете включить его или не включать в него в зависимости от состояния элемента управления. Это спасло бы вас от ошибок JavaScript в будущем, где говорится: «Объект не может быть найден», потому что вы сделали элемент управления невидимым.

Причина, по которой вы получаете «Sys не определена», заключается в том, что ваш скрипт помещается перед загрузкой файла MicrosoftAjax.js. Попробуйте что-то вроде этого:

Dim yourScript as String = "Sys.Application.add_load(function() { /*code here*/ })" 
ScriptManager.RegisterStartupScript(Page, Me.GetType(), "ScriptKey", yourScript, true) 

В противном случае вы можете использовать Page.ClientScript зацепить в document ready event при использовании имен Sys не является обязательным требованием, но это звучит как из вашего вопроса, то есть.

Edit:

Вместо RegisterStartupScript вы, вероятно, ищет RegisterClientScriptBlock, извините, два имеют различные функциональные возможности.

3

Вам необходимо либо переместить функцию Javascript под созданием элемента управления, либо добавить его в обработчик события window.load (jQuery и Prototype могут помочь вам в этом), поэтому вы гарантируете, что Javascript вызывается, когда страница загружается и не раньше, чем.

Смежные вопросы