AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TWebbrowser benötigt zu lange bis zum DocumentComplete2.

TWebbrowser benötigt zu lange bis zum DocumentComplete2.

Ein Thema von grips-net · begonnen am 31. Mär 2008 · letzter Beitrag vom 31. Mär 2008
Antwort Antwort
grips-net

Registriert seit: 3. Sep 2004
Ort: St. Wendel
50 Beiträge
 
#1

TWebbrowser benötigt zu lange bis zum DocumentComplete2.

  Alt 31. Mär 2008, 10:38
Hallo.

Ich habe eine Anwendung mit der TWebbrowser-Componente. Nun ist mir aufgefallen, dass diese (obwohl kein weiterer Code als die Komponenten, ein Edit zum Adresse eingeben und ein SpeedButton zum Auslösen der Navigate-Funktion) wesentlich länger zur Darstellung der Seite benötigt als der installierte InternetExplorer7. Der wesentliche Zeitverlust tritt zwischen onNavigateComplete2 und onDocumentComplete auf. Hier "verliert" mein Explorer bei der Internetseite rund 30 Sekunden. In dieser Zeit wird auch kein Application.ProcessMessages ausgeführt - die integrierte Uhr mit dem TTimer hängt.

Leider habe ich keinerlei Idee woran das liegen könnte - was ich ändern könnte oder wonach ich suchen müsste. Bin also für jeden Tipp dankbar. Wenn Informationen zu meiner Testapplikation fehlen, einfach fragen.

Schöne Grüße aus dem Saarland


Michael Gillen
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: TWebbrowser benötigt zu lange bis zum DocumentComplete2.

  Alt 31. Mär 2008, 10:47
Hallo Michael,

bist du sicher, dass dein Test-Szenario diesen Vergleich so zulässt? Vielleicht werden die Verzögerungen durch deinen Code zur Ereignisbehandlung verursacht. Welche Ereignisse behandelst du? Kannst du den Code dort versuchsweise abschalten? Lädt der IE7 die Seite aus dem Cache, nachdem dein eigenes Programm sie ihm dort bereit gestellt hat?

Grüße vom marabu
  Mit Zitat antworten Zitat
grips-net

Registriert seit: 3. Sep 2004
Ort: St. Wendel
50 Beiträge
 
#3

Re: TWebbrowser benötigt zu lange bis zum DocumentComplete2.

  Alt 31. Mär 2008, 10:58
Hallo marabu,

den Cache habe ich im IE7 abgeschaltet, sollte also nicht die Differenz verursachen.
Die Eriegnisse die ich abfange sind
  • OnBeforeNavigate2 (um die Startzeit zu setzen und den Cursor auf Sanduhr zu wechseln - 2 Zeilen)
  • OnNavigateComplete2 (um die erste Endzeit zu setzen - 1 Zeile)
  • OnDocumentComplete2 (um die zweite Endzeit zu setzen, die Differenz zu berechnen und anzuzeigen - 2 Zeilen)

Mehr ist es nicht.
Was mich wirklich stutzig macht, ist das der TTImer (onTimer - hier zeige ich die aktuelle zeit in der StatusBar an) während diesen 30 Sekunden auch "hängt". Braucht die Komponente wirklich so lange um den HTML-Quellcode zu parsen?

Danke.

Michael
  Mit Zitat antworten Zitat
grips-net

Registriert seit: 3. Sep 2004
Ort: St. Wendel
50 Beiträge
 
#4

Re: TWebbrowser benötigt zu lange bis zum DocumentComplete2.

  Alt 31. Mär 2008, 11:24
Hallo - ich nochmal.

Ich habe mal den zu parsenden HTML-Code etwas entschlackt - und siehe da, es rennt.
Aber warum braucht dann die TWebbrowser-Komponente trotzdem so viel länger als der IE? Laufen da noch andere Prozeduren ab?
Bin entwas irritiert, da ich dachte die Komponente wäre 1:1 das was mir auch der IE bietet.


Grüße

Michael
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: TWebbrowser benötigt zu lange bis zum DocumentComplete2.

  Alt 31. Mär 2008, 11:35
Das WebBrowser Control ist das visuelle Herzstück des Internet Explorers. Der Parser steckt in MSHTML.DLL - einen anderen verwendet auch der IE nicht. Der IE als Host des WebBrowser Controls bietet aber eine Fülle an Einstellungen, deren Werte sich durchaus von deinen in der Anwendung verwendeten unterscheiden können.

Was genau hast du aus dem markup entfernt, damit die Beschleunigung eintritt?
  Mit Zitat antworten Zitat
grips-net

Registriert seit: 3. Sep 2004
Ort: St. Wendel
50 Beiträge
 
#6

Re: TWebbrowser benötigt zu lange bis zum DocumentComplete2.

  Alt 31. Mär 2008, 11:44
Na ich hatte eine Tabelle mit 4800 Zeilen - diese hatte ich mit allen <TR>s und den jeweiligen Attributen wie onMouseOver, onMouseOut drin - sowie passender CSS-Klasse.
Nun habe ich diese Tabelle durch einen print_r ersetzt und lass mir die Array-Daten einfach so als Text ausgeben. Wobei der HTML-Rahmen mit Hintergrundgrafik erhalten blieb.

Wenn natürlich die Komponente bei mir wegen der Tabellenzeilen /-zellen oder den JS-Eventhandlern irgendeine Aktion 4800mal ausführt kann dies natürlich zu der Verzögerung führen. Die Frage ist wo oder wie ich die von dir erwähnten Eigenschaften abschalten kann.

Aber - guter Hinweis. Danke soweit.


Grüße

Michael
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: TWebbrowser benötigt zu lange bis zum DocumentComplete2.

  Alt 31. Mär 2008, 11:58
Am einfachsten ist es, wenn du dir den EmbeddedWebBrowser installierst. Dabei handelt es sich um eine Komponente, die deutlich mehr Funktionalität auf der Basis des bekannten WebBrowser Controls bereit stellt, als TWebBrowser. Dort kannst du die Optionsfelder in den Eigenschaften per Object Inspector kennen lernen. Insbesondere findest du dort eine Option zum Abschalten von Scripting.

Alternativ sollte dir auch die vielgelobte WebBrowser-Demo von Thomas Stutz hier im Forum zumindest ein paar Anhaltspunkte geben.

Tabellen werden - nicht nur im WebBrowser Control - deutlich schneller dargestellt, wenn du ihr Layout (COLGROUP) eingangs bekannt machst. Hast du daran gedacht?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf