Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

компонент twebbrouser [D7]


Max_ ©   (2004-03-31 17:23:00) 

Как можно отследить завершение загрузки страницы в webbrowser


nikkie   (2004-04-01 15:15:00) [1]

>вариант easy в моём случае отлично работает
вот это удивительно, документация описывает статусы следующим образом.

READYSTATE_UNINITIALIZED  Default initialization state.
READYSTATE_LOADING  Object is currently loading its properties.
READYSTATE_LOADED  Object has been initialized.
READYSTATE_INTERACTIVE  Object is interactive, but not all of its data is available.
READYSTATE_COMPLETE  Object has received all of its data.

логично было бы предположить, что READYSTATE_LOADED возникает до READYSTATE_COMPLETE, а когда статус установился в READYSTATE_COMPLETE, то он больше не меняется до следующей навигации. а DownloadComplete и есть извещение о том, что достигнут этот статус.

DownloadComplete
This method of the DWebBrowserEvents interface notifies an application that a document has reached the READYSTATE_COMPLETE state.


int64   (2004-04-01 10:59:00) [2]

Такой вариант просто пропускает загрузку вложенных фреймов.
Он мониторит только главный документ.
Сообщение выскакивает раньше, чем все фреймы загрузятся.


Max_   (2004-04-01 10:44:00) [3]

int64   (01.04.04 09:30) [5]
вариант easy в моём случае отлично работает а ondownloadcomplete срабатывает несколько раз в течение загрузки


int64   (2004-04-01 09:30:00) [4]

easy ©   (01.04.04 00:15) [4]
То же что и OnDownloadComplete?


easy   (2004-04-01 00:15:00) [5]

procedure TForm1.Button1Click(Sender: TObject);
begin
 WebBrowser1.Navigate('about:blank');
 while WebBrowser1.ReadyState < READYSTATE_LOADED do
   Application.ProcessMessages;
 showmessage(WebBrowser1.OleObject.document.location);
end;


int64   (2004-03-31 18:06:00) [6]

function IsWBComplete(WB: IWebbrowser2): boolean;
var
 OleContainer: IOleContainer;
 enum: IEnumUnknown;
 TempUnk: IUnknown;
 Fetched: PLongint;
 FrameLength, FrameNo: integer;
begin
Result:= True;
With WB do
 if (ReadyState = READYSTATE_COMPLETE) and (Assigned(document)) then
    begin
     OleContainer := Document as IOleContainer;
     FrameLength:=(Document as IHTMLDocument2).frames.length;
      for FrameNo:=0 to FrameLength-1 do
       begin
        Fetched := nil;
        OleContainer.EnumObjects(OLECONTF_EMBEDDINGS, Enum);
        Enum.Skip(FrameNo);
        Enum.Next(1, TempUnk, Fetched);
        Result := IsWBComplete(TempUnk as IWebbrowser2);
        if Result = False then break;
       end;
    end else
  Result:= False
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('c:\temp\2\2.htm');
while not IsWBComplete(WebBrowser1.ControlInterface) do
 Application.ProcessMessages;
ShowMessage('WebBrowser1 is complete');
end;


Max_   (2004-03-31 17:50:00) [7]

ondocumentcomplete, onnavigationcomplete, ondownloadcomplete для страничек с фрэймами срабатывают раньше чем завершается вся загрузка
нужно что-то ещё


VMcL   (2004-03-31 17:43:00) [8]

OnDocumentComplete
OnNavigateComplete2

?


Наверх

Титульная страница Поиск, карта сайта Написать письмо