Hallo CSharper,
gibt es eine Möglichkeit von einer im Webbrowsercontrol geladenen Website einzelne Javascriptfunktionen aufzurufen und die Variablen, die belegt werden, dann auszulesen oder irgendwie an die Werte der Javascriptfunktion zu kommen?
Danke für eure Hilfe,
Mazo
Hallo Mazo,
Javasrcipt Funktionen kann man wie folgt aufrufen:
HtmlDocument.InvokeScript-Methode
mfg,
XaN
ok danke schonmal damit kann ich die methode ausführen und wie komm ich dann an eine variable dran und kann diese auslesen?
Indem Du eine Function aufrufst, die Dir die Variable zurückgibt 😉
mein problem ist ja das dafür keine funktion vorgesehen ist. wenn ich jetzt einfach
<!-- JAVASCRIPT -->
<script type="text/javascript">
var localTime = new Date();
</script>
<!-- END JAVASCRIPT -->
habe wie kann ich dann den wert der variable abrufen?
Irgendwie stell ich mich heir zu blöd an 😄
Halo Mazo,
wenn Du keine Möglichkeit hast, in Dein JavaScript eine Function, oder hidden Fields, einzubauen, dann musst Du die Function über C# selbst einbetten - es gibt leider keinen anderen Weg.
Um beispielsweise die Variable abzufragen, würde man so vorgehen:
// Header element holen, muss vorhanden sein!
HtmlElement header = this.webBrowser1.Document.GetElementsByTagName("head")[0];
// Neues element anlegen
HtmlElement script = this.webBrowser1.Document.CreateElement("script");
// Element nach script Element casten
IHTMLScriptElement scriptElement = (IHTMLScriptElement)script.DomElement;
// Scripting-Text schreiben, hier eine Function, die die Variable zurückgibt
scriptElement.text = "function getMyValue() { return localTime.toString(); }";
// Script-Element an Header-Element hinzufügen
header.AppendChild(script);
// Function aufrufen
Object myValue = this.webBrowser1.Document.InvokeScript("getMyValue");
// Wert ausgeben
MessageBox.Show(myValue.ToString());
Gruß und Microsoft.mshtml einbinden nicht vergessen
Hi mosspower,
Mit dieser Variante klappt es perfekt!
Vielen Dank für deine Hilfe =)
Grüße Mazo