AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi OnDocumentComplete wird nicht mehr ausgelöst
Thema durchsuchen
Ansicht
Themen-Optionen

OnDocumentComplete wird nicht mehr ausgelöst

Ein Thema von franky.f · begonnen am 9. Jun 2010 · letzter Beitrag vom 10. Jun 2010
Antwort Antwort
franky.f

Registriert seit: 29. Jul 2008
8 Beiträge
 
#1

OnDocumentComplete wird nicht mehr ausgelöst

  Alt 9. Jun 2010, 21:30
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:
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;
Der OnBeforeNavigate2-Event sieht so aus:
Delphi-Quellcode:
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;
Ich arbeite mit Delpi7 Professional, es ist IE 8 installiert.

Danke im Voraus,

Frank

Geändert von franky.f ( 9. Jun 2010 um 21:44 Uhr) Grund: in meine Beschreibung hatte sich ein Fehler eingeschlichen.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: OnDocumentComplete wird nicht mehr ausgelöst

  Alt 9. Jun 2010, 21:55
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
franky.f

Registriert seit: 29. Jul 2008
8 Beiträge
 
#3

AW: OnDocumentComplete wird nicht mehr ausgelöst

  Alt 10. Jun 2010, 09:41
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
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: OnDocumentComplete wird nicht mehr ausgelöst

  Alt 10. Jun 2010, 09:51
Wie sieht es denn mit onDownloadcomplete aus?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#5

AW: OnDocumentComplete wird nicht mehr ausgelöst

  Alt 10. Jun 2010, 09:51
Zitat:
die unerwünschet URLs der Frames zu canceln und nur die gewünschte URL der eigentlichen Website durchzulassen.
Da müsste man wissen, was intern genau passiert - möglicherweise wird dadurch die Hauptseite nie "fertig".
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz