Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> загрузился ли webbrowser или нет 
:(
    Опции темы
FireSnake
Дата 20.10.2007, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 15.9.2006
Где: Украина, Донецк

Репутация: нет
Всего: 1



как реализовать примерно такой цикл:
Код

for i:=1 to n do
begin
        webbrowser1.navigate(a[i]);
       {1. подождать пока браузер полностью скачает страницу}
       {2. сохранить код страницы на жестком диске или в строковую переменную}
       {3. обработать код текущей страницы}
end;


Со вторым(частично) и  третьем пунктом более менее понятно. А вот как узнать закачал веббровзер полностью страницу или нет? 

Это сообщение отредактировал(а) FireSnake - 20.10.2007, 20:58
PM MAIL ICQ   Вверх
Alix
Дата 20.10.2007, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: нет
Всего: 23



Цитата(FireSnake @  20.10.2007,  21:57 Найти цитируемый пост)
подождать пока браузер полностью скачает страницу

надо использовать события. должно же там быть что-то OnLoad или а-ля OnNavigated или OnAfterNavigate. по памяти не помню, давно не использовал, а возможности посмотреть сейчас нет.

Добавлено через 1 минуту и 53 секунды
вспомнил, вроде OnDocumentComplete


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
FireSnake
Дата 20.10.2007, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 15.9.2006
Где: Украина, Донецк

Репутация: нет
Всего: 1



events? да я их тоже нашел, но не совсем понимаю как они работают. Не может произойти так что весь цикл проработает а не успеет загрузится даже первый линк?
PM MAIL ICQ   Вверх
Alix
Дата 20.10.2007, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: нет
Всего: 23



не так. надо сделать что-то вроде того:
Код

var
  a : array [1..n] of string;
  current : integer;
...
// запускаем работу программы, например по нажатию кнопки
// будем считать, что массив a уже заполнен, затем:
current := 1;
wb.navigate(a[1]);
...
// в onDocumentComplete
begin
  ...  // проверяем, что страница загрузилась (сам напиши этот код)
  saveHTMLToFile(); // 2.
  parseHTML();  // 3.
  inc(current);
  if current > n then begin
    // на этой строчке, если надо, извещаем о том, что работа завершена, затем...
    exit; // ...выходим
 end;

  wb.navigate(a[current]);
end;



--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
December
Дата 20.10.2007, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



1. Для вопросов по TWebBrowser существует подраздел ActiveX
2. В DRKB есть ответы на все вопросы


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
MrKit
Дата 21.11.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 18.1.2007
Где: Москва

Репутация: нет
Всего: нет



Цитата(December @  20.10.2007,  22:54 Найти цитируемый пост)
2. В DRKB есть ответы на все вопросы 

Скачал я его. Ответа не вижу :( (вопрос у меня тот же)

OnDownloadComplete, OnDownloadComplete, OnNavigateComplete2 - происходит, когда страница закончила грузиться.

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


Это сообщение отредактировал(а) MrKit - 21.11.2007, 19:51
PM MAIL   Вверх
December
Дата 21.11.2007, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



Код

procedure TfrPannedBrowser.wbPannedWBProgressChange(Sender: TObject;
  Progress, ProgressMax: Integer);
begin
if Application.Terminated then exit;
if (Progress=-1) then ProcessNavigationEnd;
end;

НО: всякие аяксы, ролловеры и прочая муть иногда не ловится
Мне не удалось сделать идеальную, 100% надёжную схему отлова момента окончания загрузки. Рекомендую сделать тестовое приложение, в котором отлавливать все события TWebBrowser. Это единственный способ разобраться где, что и как происходит.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
MetalFan
Дата 22.11.2007, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 3
Всего: 128



может ReadyState проверять?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
MrKit
Дата 22.11.2007, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 18.1.2007
Где: Москва

Репутация: нет
Всего: нет



Цитата(MetalFan @ 22.11.2007,  00:11)
может ReadyState проверять?

не работает.
PM MAIL   Вверх
MetalFan
Дата 22.11.2007, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 3
Всего: 128



MrKit, всмысле не работает?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
MrKit
Дата 22.11.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 18.1.2007
Где: Москва

Репутация: нет
Всего: нет



Цитата(MetalFan @  22.11.2007,  08:41 Найти цитируемый пост)
MrKit, всмысле не работает?

В прямом.  Я пробовал проверять
Код

procedure Tf.wbDocumentComplete
HTMLDocument:= wb.Document as IHTMLDocument2;
  if HTMLDocument.readyState = 'complete' then
    ...

но для моего примера это условие выполнялось уже при первом вызове процедуры, а всего она вызывалась три раза при загрузке одной страницы. Очевидно, это зависит от структуры странички.
PM MAIL   Вверх
ilBEastli
Дата 22.11.2007, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 18.9.2006

Репутация: нет
Всего: 2



Код

const
  READYSTATE_COMPLETE = $00000004;
...
if WebBrowser.ReadyState = READYSTATE_COMPLETE then

Взято с форума (оригинальное сообщение от phanatos)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.