![]() |
OnDocumentComplete wird nicht mehr ausgelöst
Hallo,
ich habe gerade ein Problem mit OnDocumentComplete und OnBeforeNavigate2. Ich möchte Daten einer Website auslesen, dazu sollte sie ja fertig geladen sein. Nun wird leider nicht immer das OnDocumentComplete der Hauptseite ausgelöst, die OnDocumentComplete-Events der Unterframes hingegen schon. In 90% der Fälle geht alles gut, jedoch manchmal eben nicht. In den Frames werden Ads geladen, z.B. GoogleAds. Ich vermute, dass eines der Frames manchmal Probleme macht. Mein Lösungsansatz war nun, in OnBeforeNavigate2 die unerwünschet URLs der Frames zu canceln und nur die gewünschte URL der eigentlichen Website durchzulassen. Die Ad-URLs werden nun auch geblockt. Die Haupt-URL ist im Webbrowsercontrol vollständig und ohne Frameinhalte zu sehen Im Logfile stehen dann anschliessend alle OnBeforeNavigate2-Einträge der Frames aber leider wird das OnDocumentComplete der Hauptseite, die ja nicht gecanceled wurde, nun generell nicht mehr ausgelöst. Der OnDocumentComplete sieht so aus:
Delphi-Quellcode:
Der OnBeforeNavigate2-Event sieht so aus:
procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
var CurWebrowser: IWebBrowser; TopWebBrowser: IWebBrowser; Document: OLEvariant; WindowName: string; begin CurWebrowser := pDisp as IWebBrowser; TopWebBrowser := (ASender as TWebBrowser).DefaultInterface; if CurWebrowser = TopWebBrowser then begin Append(LogFile); Writeln(LogFile, 'TopWebbrowser! Document is complete.'); Writeln(LogFile, URL); CloseFile(LogFile); end else begin Document := CurWebrowser.Document; WindowName := Document.ParentWindow.Name; Append(LogFile); Writeln(LogFile, 'Frame ' + WindowName + ' is loaded.'); Writeln(LogFile, URL); CloseFile(LogFile); end; end;
Delphi-Quellcode:
Ich arbeite mit Delpi7 Professional, es ist IE 8 installiert.
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); begin Append(LogFile); Writeln(LogFile, 'BeforeNavigate2'); Writeln(LogFile, 'URL: ' + URL); Writeln(LogFile, '<<< ------------------------------------------- BeforeNavigate2'); CloseFile(LogFile); if Pos('http://www.HauptURL.de/', AnsiLowerCase(URL)) > 0 then Cancel := False else Cancel := True; end; Danke im Voraus, Frank |
AW: OnDocumentComplete wird nicht mehr ausgelöst
Moin Frank,
wie wäre es denn, wenn Du mit TidHTTP (Indys) die URL lädst, dann müsstest Du alles haben, was Du brauchst. |
AW: OnDocumentComplete wird nicht mehr ausgelöst
Hallo Christian und Danke erstmal.
Die Indys habe ich bisher nicht im Einsatz, aber ich denke, es ist einen Versuch wert. Allerdings interessiert mich dennoch, warum mein bisheriger Ansatz mit dem TWebbrowser-Control nicht richtig funktioniert. Laut Definition muss doch das OnDocumentComplete der Hauptseite immer kommen, oder? Gruß Frank |
AW: OnDocumentComplete wird nicht mehr ausgelöst
Wie sieht es denn mit onDownloadcomplete aus?
|
AW: OnDocumentComplete wird nicht mehr ausgelöst
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz