Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2013, 15:51   #1
Rolls
Пользователь
 
Регистрация: 07.05.2010
Сообщений: 45
По умолчанию TWebBrowser модель DOM

Здравствуйте, форумчане!
Происходит какая-то нелогичная ситуация, уже голову сломал, как её обмануть, если кто в курсе, буду очень рад!
Дело в следующем:

загружаю страничку по ссылке в TwebBrowser, потом в переменную типа Variant считываю.
Вот две основные строчки:
Код:
var
  Doc : Variant;
...
wb1.Navigate(SearchURLGlob);
Doc := wb1.OleObject.document;
Так вот если эти строчки висят на двух кнопках, то всё ок, а если на одной кнопке, как в примере (просто одна за другой), то Doc постоянно равен nill.

Внимание! пытался бороться с этим таким образом: в обработчик события WebBrowsera OnDocumentComplete вписал код
Код:
WbLoaded := True;
а после wb1.Navigate код
Код:
 while not WbLoaded do
    Application.ProcessMessages;
работает через раз (лучше б уже совсем не работало).

Ещё вешал wb1.navigate на другую кнопку и программно вызывал её нажатие - опять же через раз отрабатывает правильно ( а то и через пять).

Внимание2!

если перед проверкой переменно DOC на пустоту вывести её через ShowMessage, то происходит чудо! через раз она отображается пучтойЮ но в МЕМО всегда записывается правильно!

кто знает как заставить строчку Doc := wb1.OleObject.document работать после ПОЛНОЙ загрузки WB, отзовитесь!
Rolls вне форума Ответить с цитированием
Старый 12.03.2013, 17:53   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

видимо вызывать (выполнять действие)
Код:
Doc := wb1.OleObject.document;
ее при наступлении события
Цитата:
после ПОЛНОЙ загрузки WB
Oncompleted кажется так.

Цитата:
в обработчик события WebBrowsera OnDocumentComplete вписал код
а почему сюда не вписать
Код:
Doc := wb1.OleObject.document;
и ПЕРЕД загрузкой новой страницы очищать
doc:=nil;
wb1.navigate(...);
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 12.03.2013 в 17:59.
evg_m вне форума Ответить с цитированием
Старый 23.03.2013, 15:03   #3
maxidon
Пользователь
 
Регистрация: 04.07.2011
Сообщений: 12
По умолчанию

после
Код:
wb1.navigate(...);
вставляешь вот это
Код:
while form1.wb.ReadyState<>4 do Application.ProcessMessages;
и он не будет ничего делать пока этот цикл не завершиться
maxidon вне форума Ответить с цитированием
Старый 05.04.2013, 17:00   #4
Rolls
Пользователь
 
Регистрация: 07.05.2010
Сообщений: 45
По умолчанию

Цитата:
Сообщение от maxidon Посмотреть сообщение
после
Код:
wb1.navigate(...);
вставляешь вот это
Код:
while form1.wb.ReadyState<>4 do Application.ProcessMessages;
и он не будет ничего делать пока этот цикл не завершиться
к сожалению этот вариант не канает
Rolls вне форума Ответить с цитированием
Старый 05.04.2013, 17:26   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

OnDocumentComplete может вызыватся несколько раз, вам надо ждать последнего
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DOM php5 alexander1111 PHP 0 09.03.2011 22:56
Объектная модель DOM Kapitann JavaScript, Ajax 5 18.08.2010 08:44
Incompatible types: 'Unit1.TWebBrowser' and 'SHDocVw.TWebBrowser' simon15x Общие вопросы Delphi 0 10.04.2010 03:11
TWebBrowser DOM KASioZ Работа с сетью в Delphi 0 11.12.2009 07:02
Дерево DOM fclmhooligan JavaScript, Ajax 1 24.11.2008 14:11