Einzelnen Beitrag anzeigen

Benutzerbild von gubbe
gubbe

Registriert seit: 8. Okt 2005
Ort: Schleswig-Holstein
127 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: auf EdgeBrowser.ExecuteScript warten

  Alt 28. Jun 2024, 08:09
Ist "NavigationStarting" nicht viel zu früh?

Hier ist eine schöne Grafik, die den Ablauf zeigt:
https://learn.microsoft.com/de-de/mi...igation-events

An der Stelle ist ja noch gar nichts geladen und man kann die Navigation sogar noch verhindern. Es würde mich wundern, wenn man hier per Javascript schon Event-Handler setzen könnte. Theoretisch müsste das Script noch im Kontext der vorherigen Seiten ausgeführt werden. Wenn Du aber erfolgreich eine Rückmeldung kriegst, hast Du vielleicht Glück und die Scriptausführung wird verzögert bis zum Laden der Seite. Muss ich auch mal ausprobieren.

In der Grafik sieht man aber auch, dass NavigationCompleted nach DomContentloaded aufgerufen wird. Mein Beispiel mit DomContentloaded war hier also nicht sehr hilfreich, auch wenn es bei meinem Test funktionierte.

Also eigentlich wäre NavigationCompleted in Delphi das passende Ereignis, um den Quelltext auszulesen, da hier auch schon Bilder, Scripte etc. geladen sind. Wobei man nur für das Auslesen des Quelltextes evtl. gar nicht möchte, dass Bilder geladen werden, aber das ist ein anderes Thema. Man könnte auch direkt über einen HTTP-Aufruf den Quelltext lesen. Den Browser nutzt man, wenn man man einen Benutzer simulieren muss oder damit Javascript ausgeführt wird. Nur ist in NavigationCompleted zwar alles geladen, aber die Scripte starten teilweise auch erst dann, wenn sie z.B. auf "OnLoad" im Browser warten oder asynchron geladen werden.

Aber um die letzte Frage zu beantworten: Das JSON-Objekt brauchst Du hier ja nicht, weil nur ein String übermittelt wird. Es wäre aber möglich, auch JSON-Daten zu senden und in WebmassageReceived mit args.ArgsInterface.Get_webMessageAsJson auszulesen.

Die PN mit den Beispielwebseiten habe ich erhalten und schaue sie mir später an.
  Mit Zitat antworten Zitat