AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TWebBrowser / JS / AJAX überwachen
Thema durchsuchen
Ansicht
Themen-Optionen

TWebBrowser / JS / AJAX überwachen

Ein Thema von Jacques Murell · begonnen am 23. Feb 2011 · letzter Beitrag vom 23. Feb 2011
Antwort Antwort
Benutzerbild von Jacques Murell
Jacques Murell

Registriert seit: 7. Jun 2010
113 Beiträge
 
Turbo Delphi für Win32
 
#1

TWebBrowser / JS / AJAX überwachen

  Alt 23. Feb 2011, 16:07
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
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#2

AW: TWebBrowser / JS / AJAX überwachen

  Alt 23. Feb 2011, 16:48
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Jacques Murell
Jacques Murell

Registriert seit: 7. Jun 2010
113 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: TWebBrowser / JS / AJAX überwachen

  Alt 23. Feb 2011, 16:52
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?
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#4

AW: TWebBrowser / JS / AJAX überwachen

  Alt 23. Feb 2011, 16:56
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Jacques Murell
Jacques Murell

Registriert seit: 7. Jun 2010
113 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: TWebBrowser / JS / AJAX überwachen

  Alt 23. Feb 2011, 17:09
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.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#6

AW: TWebBrowser / JS / AJAX überwachen

  Alt 23. Feb 2011, 17:24
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?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Jacques Murell
Jacques Murell

Registriert seit: 7. Jun 2010
113 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: TWebBrowser / JS / AJAX überwachen

  Alt 23. Feb 2011, 17:36
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.
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#8

AW: TWebBrowser / JS / AJAX überwachen

  Alt 23. Feb 2011, 18:27
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
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#9

AW: TWebBrowser / JS / AJAX überwachen

  Alt 23. Feb 2011, 18:41
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.
Erm.. AJAX = Asynchronous Javascript And Xml. Alles AJAX im Browser ist immer mittels Javascript realisiert.
Es gibt z.B. viele Seiten die Börsenkurse mit dieser Technologie hier aktualisieren. Auch hier kann man ein bisschen Javascript injizieren und die Funktionen die die neuen Werte in die Zellen schreiben so abändern dass sie diese z.B. erst noch per Alert() ausgeben oder in eine dynamisch hinzugefügte Textbox schreiben die dann ein von Extern abfangbares OnChange-Event feuert.

Edit: PS: Die meisten der Portale die diese Finanzdaten bereitstellen wären allerdings nicht begeistert wenn man die so abgreift.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  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 03:34 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