Веб-браузер и JavaScript - PullRequest
1 голос
/ 07 марта 2012

Я работаю с веб-сайтом, на котором есть JavaScript, который вносит некоторые изменения в загрузку страницы.Однако, когда я загружаю страницу и обрабатываю событие DocumentCompleted, это изменение не происходит.Если я продолжу вставлять событие DocumentCompleted, я увижу, что изменения произошли.Однако мне нужно, чтобы это изменение произошло во время DocumentCompleted, чтобы я мог проверить некоторые вещи.

Есть ли другое событие, на которое я могу подписаться, или способ заставить webBrowser выполнять весь javscript на странице?

Редактировать: это то, о чем я говорю.

Я загрузил образец страницы, чтобы показать вам, и нажал кнопку отправки со всеми пустыми полями, чтобы выдать ошибку.

Вот результат:

http://s8.postimage.org/zfv6stcar/sfsdfsdfds.jpg

Теперь, если я возьму HTML в этот конкретный момент из этого элемента управления WebBrowser и отобразлю его где-нибудь еще, эти ошибки исчезнут.То же самое происходит, когда сервер возвращает эти ошибки.Если я обработаю событие DocumentCompleted и возьму HTML, его там нет.Но после события оно появляется в контроле.

Надеюсь, вы понимаете, это трудно объяснить.

1 Ответ

1 голос
/ 07 марта 2012

Кажется, проблема в том, что событие DocumentCompleted вызывается до JavaScript.Вы должны немного прочитать о том, как функционируют вещи на стороне клиента или на стороне сервера.

Один из вариантов - создать отдельный метод для события DocumentCompleted и вызвать его из javascript после его завершения.В результате последовательность этих событий будет работать правильно, но это не очень идеально.

В качестве альтернативы вы можете вызвать код javascript в начале вашего события DocumentCompleted.Ссылка ниже дает довольно хорошее объяснение того, как это сделать.

http://forums.asp.net/t/1117189.aspx/1

Лично я бы не использовал javascript и не выполнял валидацию на стороне клиента .NET, но яне знаю достаточно о сайте, чтобы действительно сказать.

РЕДАКТИРОВАТЬ:

Это должен быть сценарий, который вы ищете.В качестве альтернативы здесь есть тема, связанная с вашей проблемой.Извините, у меня нет точного кода, так как у меня нет проекта для его проверки.

http://msdn.microsoft.com/en-us/library/system.web.ui.clientscriptmanager.registerstartupscript.aspx

Вызов функции JavaScript из CodeBehind

RE-EDIT:

То, что происходит по ссылке, которую вы указали в комментариях, заключается в том, что каждое текстовое поле вызывает некоторый JavaScript, а также кнопку отправки.Лучший способ проверить это - использовать «Проверить элемент» в контекстном меню в Google Chrome.Например, выполнение этого над текстовым полем покажет, что оно зарегистрировано с несколькими событиями:

onfocus="$('f_tip_Username').style.display = 'inline'"

onblur="$('f_tip_Username').style.display = 'none'"

onchange="$('f_err_Username').style.display = 'none'"

Первый элемент с идентификатором 'f_tip_Username' устанавливает стиль отображения этого элемента как встроенный (видимый)).

Кнопка отправки вызывает следующее:

onclick="return o_edit_profile_form.validate()"

Выполняя поиск "o_edit_profile_form" в исходном коде, вы можете найти точное местоположение вызываемого javascript.Наслаждайтесь!

ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ (надеюсь?):

Выполните следующие действия: перейдите на свой сайт, щелкните правой кнопкой мыши и откройте исходный код.Найдите "f_tip_Username".Это идентификатор одного из используемых тегов div.Третья запись должна быть «тегом div», который используется под первым текстовым полем, чтобы предупредить о «не менее 3 символов».

Вы заметите выше, что в коде есть тип ввода «текст» с именем «Имя пользователя».Обратите внимание на три события, которые он зарегистрировал в нем:

onfocus="$('f_tip_Username').style.display = 'inline'" 
onblur="$('f_tip_Username').style.display = 'none'" 
onchange="$('f_err_Username').style.display = 'none'"

Они либо скрывают, либо делают видимыми, тег div, который мы нашли (f_tip_username), а также отдельный тег div (f_err_Username), который является тегом div сообщения об ошибке.,Дайте мне знать, если вы не можете найти их в источнике.Следуйте инструкциям, которые я предоставил, и вы найдете его в «представлении источника» ИЛИ в DocumentText.

...