Laden...

[gelöst] webbrowsercontrol javascriptvariablen auslesen

Erstellt von Mazo vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.668 Views
M
Mazo Themenstarter:in
255 Beiträge seit 2006
vor 14 Jahren
[gelöst] webbrowsercontrol javascriptvariablen auslesen

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

W
113 Beiträge seit 2006
vor 14 Jahren

Hallo Mazo,

Javasrcipt Funktionen kann man wie folgt aufrufen:

HtmlDocument.InvokeScript-Methode

mfg,
XaN

M
Mazo Themenstarter:in
255 Beiträge seit 2006
vor 14 Jahren

ok danke schonmal damit kann ich die methode ausführen und wie komm ich dann an eine variable dran und kann diese auslesen?

456 Beiträge seit 2007
vor 14 Jahren

Indem Du eine Function aufrufst, die Dir die Variable zurückgibt 😉

M
Mazo Themenstarter:in
255 Beiträge seit 2006
vor 14 Jahren

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 😄

456 Beiträge seit 2007
vor 14 Jahren

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

M
Mazo Themenstarter:in
255 Beiträge seit 2006
vor 14 Jahren

Hi mosspower,
Mit dieser Variante klappt es perfekt!
Vielen Dank für deine Hilfe =)

Grüße Mazo