Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / WebBrowser. Дождаться полной загрузки кода в innerHTML / 3 сообщений из 3, страница 1 из 1
21.04.2010, 15:15
    #36590371
Максим М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebBrowser. Дождаться полной загрузки кода в innerHTML
Имею следующий код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    Dim ie As WebBrowser
    Dim res As String
                        
    Set ie = CreateObject("InternetExplorer.Application")

    ie.Navigate "http://www.dellin.ru/"

    While ie.Busy
        DoEvents
    Wend

    While ie.ReadyState <> READYSTATE_COMPLETE
        DoEvents
    Wend
    
    res = ie.Document.documentElement.innerHTML

Проблема в том, что ReadyState = READYSTATE_COMPLETE происходит раньше, чем полностью загружается страница. Проверял в Immediate:
?len(res)
16545
?len(ie.Document.documentElement.innerHTML)
17454

Каким образом можно гагантированно дождаться полной загрузки страницы?
...
Рейтинг: 0 / 0
21.04.2010, 15:29
    #36590414
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebBrowser. Дождаться полной загрузки кода в innerHTML
Циклом с ReadyState. Я гарантирую это. Правда перд загрузкой нужно IE сделать видимым.
...
Рейтинг: 0 / 0
21.04.2010, 15:49
    #36590472
Максим М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WebBrowser. Дождаться полной загрузки кода в innerHTML
AntonariyЦиклом с ReadyState.

Да, вы правы.

Я, кажется, понял, что меня сбило с толку:
Я искал нужные фрагменты html непоследственно ie.Document.documentElement.innerHTML, и, время от времени мой код сбоил, не находя нужных фрагментов. Я предполагал, что не до конца загружается страница. Однако, по всей видимости, значение ie.Document.documentElement.innerHTML меняется с течением времени (на разных этапах выполнения программы ?len(ie.Document.documentElement.innerHTML) выдает разные результаты), и в нем в принципе некорректно делать разбор текста.

Как только я скопировал значение innerHTML в текстовую переменную, и именно в ней начал делать разбор html-кода, сбои прекратились.

Спасибо!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / WebBrowser. Дождаться полной загрузки кода в innerHTML / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]