Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.04.02;
Скачать: CL | DM;

Вниз

Полная загрузка страницы в Twebbrowser   Найти похожие ветки 

 
lewka ©   (2015-08-05 10:10) [0]

Здравствуйте, уважаемые мастера программирования.
Подскажите, пожалуйста, как определить, что страница открываемая в TWebbrowser полностью загрузилась. Я знаю что есть событие OnDownloadComplete, но оно выполняется много раз при открывании страницы.
Вот например сайт http://napartnjorkah.blogspot.ru , при открывании его событие срабатывает 8 раз.


 
sniknik ©   (2015-08-05 13:53) [1]

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

делай так
procedure TForm1.Button2Click(Sender: TObject);
var
 url: OleVariant;
begin
 iCount:= 0;
 Label1.Caption:= "0";

 url:= "http://napartnjorkah.blogspot.ru/";

 WebBrowser2.Navigate2(url);
end;

procedure TForm1.WebBrowser2DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
begin
 if URL = "http://napartnjorkah.blogspot.ru/" then begin
   iCount:= iCount + 1;
   Label1.Caption:= "DocumentComplete " + IntToStr(iCount);
 end;
 Memo1.Lines.Add(URL);
end;


 
lewka ©   (2015-08-05 15:19) [2]

Все понятно с этим.
А еще маленький вопрос/
Делаю Webbrowser скрытым (через Hide), загружаю в него страницу.
Но OnDocumentComplete не срабатывает пока не сделать Webbrowser.Show
Как в скрытом TWebbrowser определить загрузился сайт или нет?


 
sniknik ©   (2015-08-05 15:50) [3]

как может быть завершён документ которого не видно? не логично.
попробуй NavigateComplete по той же схеме, может выйдет.


 
sniknik ©   (2015-08-05 15:53) [4]

хотя, Navigate не то же самое что документ, он до формирования страницы делается... но она загрузилась, т.е. "по букве вопроса"
> полностью загрузилась
подходит.


 
ухты ©   (2015-08-06 00:39) [5]

надо определить сначала что есть "полностью загрузилась"


 
sniknik ©   (2015-08-06 10:09) [6]

зачем определять? читать буквально что значат названия событий и что в доке по ним написано...

NavigateComplete - загрузилось, именно та страница которую запрашивали. то что там она в процессе построения документа еще что то догружает неважно. страница загрузилась.

DocumentComplete - сформирован документ, все предварительные, для этого нужные догрузки сделаны. изменения по событиям например, перестройка внутри страницы по например нажатию на что-то, без смены url-а (Ajax)не считается. (если считать то некоторые вообще никогда не сформируются ибо динамические по сути)


 
ухты ©   (2015-08-06 14:34) [7]

события только инструмент, исходить надо от задачи



Страницы: 1 вся ветка

Текущий архив: 2017.04.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.006 c
15-1459700405
K-1000
2016-04-03 19:20
2017.04.02
Queue. Объясните, чего ему ещё надо?


2-1438328592
Pavelnk
2015-07-31 10:43
2017.04.02
Перекинуть edit в буфер


3-1313067737
amamed_3071
2011-08-11 17:02
2017.04.02
Upgate SQL 2005 Expression to SQL 2005 Enterprice


1-1327322645
Light-blr
2012-01-23 16:44
2017.04.02
Выделенный элемент ListView при потере фокуса становится серым


2-1437652682
Ринсвинд
2015-07-23 14:58
2017.04.02
Запросы не поделили Buffer I/O