Снова WebBrowser

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

euroflock
Обычный пользователь
Обычный пользователь
 
Сообщения: 68
Зарегистрирован: 26.02.2009 (Чт) 12:54

Снова WebBrowser

Сообщение euroflock » 28.04.2009 (Вт) 22:47

Такая ситуация: Есть форма с браузером. В браузер загружена страничка с полем ввода (например <input type='text' name='data' value=''>). Заполняю это поле ввода своими данными (вручную или программно) например .SetAttribute("value","test value string") - в браузере на страничке введенные данные присутствуют. Затем просматриваю WebBrowser.DocumentText (или "просмотр HTML кода" по правой кнопке мышки на странице в браузере) и вижу <input type='text' name='data' value=''> вместо <input type='text' name='data' value='test value string'>, хотя не смотря на это .GetAttribute("value") даёт "test value string"...

Почему так происходит (или я что-то не так делаю)? Как сделать, чтобы сразу после ввода данные уже были доступны приложению?

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Снова WebBrowser

Сообщение Williams » 29.04.2009 (Ср) 0:07

Значения в коде, это по-умолчанию, а то, что введено, хранится в памяти ) Или ты думаешь программа специально будет модифицировать изначальный исходник страницы чтобы отразить введеные данные?
И вы думаете, что вас оставят в живых после прочтения этого поста?

euroflock
Обычный пользователь
Обычный пользователь
 
Сообщения: 68
Зарегистрирован: 26.02.2009 (Чт) 12:54

Re: Снова WebBrowser

Сообщение euroflock » 02.05.2009 (Сб) 1:24

Williams писал(а):Или ты думаешь программа специально будет модифицировать изначальный исходник страницы чтобы отразить введеные данные?


На самом деле WebBrowser самостоятельно "по умолчанию" модифицирует реальный исходник страницы "под себя". И небыло бы абсолютно ничего сверхъестественного, если бы "просмотр содержимого HTML документа" (из меню по правой кнопке мышки) и WebBrowser.DocumentText всего лишь отображали для пользователя не "свой изначальный исходник", а реально находящийся на странице видимый пользователю контент (со всеми изменениями в пользовательских полях).

И вообще, я думаю, что "программа специально должна модифицировать свой изначальный исходник страницы, чтобы отразить введеные данные" и показать пользователю в любой момент времени реальное содержимое видимой страницы. Ведь нет никакой необходимости каждый раз "модифицировать изначальный исходник страницы" после каждого клика или ввода данных... Программа обязана это делать по требованию пользователя...

Не буду больше ничего доказывать по этому поводу, т.к. все мои доводы очевидны и логичны (во всяком случае я так думаю).

А теперь мои ответы на поставленные мной же вопросы:

1.
euroflock писал(а):Почему так происходит (или я что-то не так делаю)?

Это происходит потому, что изначально встроенный в студию элемент управления WebBrowser "повёрнут к пользователю задом", а совсем не потому, что так и должно быть! Всё это касается не только отображения данных, но и многопоточности и многого многого другого...

2.
euroflock писал(а):Как сделать, чтобы сразу после ввода данные уже были доступны приложению?

Очень просто - не пользоваться элементом управления WebBrowser. Или, если он всё же необходим, вызывать методы и свойства его "прородителя" WebBrowser1.Document.DomDocument, подключая и смело пользуясь библиотекой MSHTML. При этом, в любой момент вызывая .documentElement.innerHTML или др. мы всегда будем получать исключительно тот контент страницы, который в данный момент отображён на ней (со всеми пользовательскими изменениями) без побочных "натуг" по поводу "специально модифицировать изначальный исходник страницы".


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 73

    TopList