![]() |
TWebBrowser / JS / AJAX überwachen
Moin,
ich habe mir eine kleine Beispielwebseite gebaut, welche via JavaScript eine beliebige Zahlenkombination ausgibt. Diese Webseite lade ich innerhalb meiner Applikation in einen TWebBrowser und lasse sie darstellen. Nun zum Problem: Die Webseite ändert in unregelmäßigen Abständen ihren Inhalt, dass heißt via JavaScript werden die Zahlenkombinationen auf die Seite gestellt. Ich stehe nun vor dem Problem: Ich müsste innerhalb meiner Applikation sofort darauf reagieren, wenn sie der Inhalt der Webseite ändert. Die aktuelle Zahlenkombination steht ja im Webseitenquelltext. Läuft das JS-Skript nun aber weiter, ändert sich logischerweise die Kombination jedenfalls in der Anzeige - der Seitenquelltext bleibt ja unverändert. Ein ständiges Neuladen der Seite kommt aus Traffic und anderen Gründen nicht in Frage. Leider verfügt der TWebbrowser über keine "OnChange"-Funktion oder so, wie kann ich also auf solche Veränderungen innerhalb der geladenen Webseite reagieren? Ich bin für jeden Tipp / Hinweis sehr dankbar, vielen Dank schonmal. lg |
AW: TWebBrowser / JS / AJAX überwachen
Es gibt keine Möglichkeit, Änderungen im DOM so unmittelbar zu überwachen.
Die einfachste Möglichkeit wäre wahrscheinlich, das dort laufende Javascript zur Laufzeit so zu modifizieren, dass es nachdem es die geänderten Werte geschrieben hat sie Dir das noch mitteilt. Dazu kannst Du z.B. ein DOM-Event auf dem Document auslösen und das im TWebBrowser abfangen. |
AW: TWebBrowser / JS / AJAX überwachen
Das ist das Problem. Bei meinem eigenen kleinen Test-JS mag das klappen; leider jedoch habe ich beim eigentlich Zielprojekt gar keinen Einfluss auf das JavaScript und kann da nichts ändern. Gibt es denn wirklich keine Möglichkeit den TWebBrowser auf angezeigte Änderungen zu überwachen?
|
AW: TWebBrowser / JS / AJAX überwachen
Nein, Du kannst lediglich in den TWebbrowser eigenes Javascript einschleusen welches das vom Zielprojekt vorgegebene Javascript zur Laufzeit verändert. Javascript ist eine hochdynamische Sprache, und Du kannst mit eigenem Javascript komplette existierende Funktionen ändern, umschreiben, anpassen, whatever. :) Natürlich kannst Du da beliebig alles ändern, und einen einzelnen Call hinzufügen ist da noch das einfachste.
|
AW: TWebBrowser / JS / AJAX überwachen
Oki, danke dir. Das Problem ist, dass ich keinerlei Einblick in das fremde JS hab. Das heißt ich wüsste nichtmal was ich denn ändern sollte. :-( Gibt es vlt andere Möglichkeiten außerhalb des TWebBrowsers - auf den könnte ich verzichten.
|
AW: TWebBrowser / JS / AJAX überwachen
Nein, das DOM stellt keine Überwachungsfunktionen bereit. Das andere JS kannst Du Dir aber z.B. im Firefox mit Firebug angucken - und dort auf in der console live bearbeiten zum testen. So schwierig ist das jetzt ned. Was ist denn das für eine seltsame Seite?
|
AW: TWebBrowser / JS / AJAX überwachen
Ein kleines Portal das Daten bereitstellt. Laut Betreiber darf ich diese Daten nutzen (solange ich die richtige Webseite vollständig anzeige, daher TWebBrowser) aber weitere Informationen zu den Skripten bzw wie ich auf die Sekunde genau auf die Änderungen reagieren kann stellt er mir nicht bereit.
Aktuell weiß ich nichtmal ob die Daten der per JS (war nur meine Vermutung) eingespeist werden oder doch via AJAX. Wie bekommt denn der Browser die Änderungen mit? Immerhin ändert dieser ja die Anzeige. Ich weiß ja nicht, wollte die Anwendung eigentlich via Delphi schreiben aber wenn es andere Lösungsmöglichkeiten via PHP oder anderen Sprachen gäbe wäre ich für Tipps sehr dankbar. Im allerletzten Fall würde ich dann auf OCR zurückgreifen müssen - sofern sich das realisieren lässt. |
AW: TWebBrowser / JS / AJAX überwachen
Wie der Browser das mitbekommt ist ganz einfach: Du benutzt z.B. document.write('BLA');. Dann führt der Browser das aus, ändert den Quellcode und zeigt diesen dann an. Hierbei handelt es sich um Browser-interna, genauso wie JavaScript selbst. Also: Wie der Browser das mitbekommt? - Er sagt es sich selbst, weil er auch für die Auswertung von JS zuständig ist.
Bernhard |
AW: TWebBrowser / JS / AJAX überwachen
Zitat:
Es gibt z.B. viele Seiten die Börsenkurse mit ![]() Edit: PS: Die meisten der Portale die diese Finanzdaten bereitstellen wären allerdings nicht begeistert wenn man die so abgreift. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01: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