![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
компонент 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
?