WebBrowser und eigene script language
(Delphi 2007)
hallo Delphi-PRAXIS-Gemeinde und frohe Weihnachten! Ich benutze die TEmbeddedWB-Komponente (Bsalsa.com: TEmbeddedWB), die sich aber von der Delphi Browser Komponente (und damit vom IE) ableitet. Ich frage mich jetzt, wie ich einen Teil der Daten eines Dokuments selber interpretieren kann. Bzw. wie ich einen eigenen Skript-Interpreter ins Spiel bringen kann. Das ganze mal als Beispiel: Das HTML-Dokument:
Code:
Was bereits richtig läuft ist die Anzeige der MessageBox mit "Dieser Teil interessiert mich nicht!" (verursacht durch den JavaScript-Befehl: alert). Der andere Skriptteil wird einfach ignoriert - was ja eigentlich auch gut ist, denn ist gibt ja keine MyScriptLang. Ich möchte aber nun die Befehle in diesem Script-Block selber interpretieren und das am besten ohne dass das HTML-Dokument zweimal geparst (also dass ich die Datei einmal selber abrufe und sie nach meinen Script-Blöcken durchsuche und dann der Browser nochmal drüber guckt) werden muss.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Test-Dokument</title> <style> body { background-color: #333333; color: #FFFFFF; margin: 0px 0px 0px 0px; } </style> </head> <body> <script language="JavaScript"> alert('Dieser Teil interessiert mich nicht!'); </script> <script language="MyScriptLang"> alert('Dieser Teil interessiert mich!'); </script> </body> </html> Kann ich da irgendwelche Nachrichten abfangen, bzw. sowas wie nen Skript-Interpreter "registieren" oder sonst etwas tun um den Teil selbst zu interpretieren? Im Moment interessiert mich dabei nur eine lokale Lösung, d.h. das muss nur in meinem Programm so passieren, aber wer die Masterlösung parat hat und mit 'ner globalen Lösung kommt: So rein interesse halber würd ich das auch gern wissen :D Danke schonmal im voraus :-) |
Re: WebBrowser und eigene script language
Naja also eine Masterlösung für alle Browser wäre folgende: Du müsstest den Interpreter in JavaScript umsetzen und eben mit JavaScript das machen, was du zwischen den <script>-Tags stehen hast.
Das trifft vllt nicht 100%ig das was du möchtest; allerdings ist dies dann Browserunabhängig (und wenn es sich erst einmal etabliert hat, dann wird deine Sprache ja auch in den Browsern zum Standard :mrgreen: ). |
Re: WebBrowser und eigene script language
hmm.. dann gehen wir besser doch über zu einer lokalen lösung :D
was mir am JavaScript-Interpreter misfällt: Ich möchte so etwas wie eine eigene Skriptsprache, weil ich das für den ordentlichsten Weg halte mit dem Browser zu kommunizieren: So wie der JavaScript-Befehl alert - vom Browser interpretiert - dazu auffordert eine MessageBox anzuzeigen. Sowas hätte ich auch gerne: eine Möglichkeit mit einem erweiterbaren Befehlssatz über den Browser mit meinem Programm zu kommunizieren. |
Re: WebBrowser und eigene script language
mhm :cry: :-D
|
Re: WebBrowser und eigene script language
Na ich denke da wirst du nicht um ein parsen herrumkommen
|
Re: WebBrowser und eigene script language
Naja gut wär auch zu einfach gewesen ^^ Trotzdem danke :-)
Vielleicht noch ein Lösungsansatz für Leute mit ähnlichem Leiden: Die TEmbeddedWB Komponente besitzt ein Event namens OnShowMessage. Dieses Event wird aktiv, wenn der Browser ein Nachrichtfenster anzeigt (also sowas wie JavaScript's alert): In diesem Event kann man den Text der MessageBox abfragen und danach dann entscheiden, ob man Result auf 0 setzt - die MessageBox wird nicht angezeigt oder ob man Result auf 1 setzt - die MessageBox wird angezeigt. Bestimmt ein denkbar unsauberer Weg eigene Befehle über eine alert-Box, die nicht angezeigt wird an den Client zu senden, aber immerhin kommt man um das doppelt parsen herum. Für meine Zwecke reicht das eventuell schon. Guten Rutsch ;-) :drunken: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:53 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