WebBrowser Javascript ausführen klappt nur halb

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Majomi.

    WebBrowser Javascript ausführen klappt nur halb

    Guten Tag,

    ich mache es so kurz wie möglich. Folgendes ist der Javascript den ich ausführen will: "parent.setLocation('overAkte'); showAkte(1)"
    Das Problem ist, dass dies: "javascript:parent.setLocation('overAkte'); showAkte(1)" nicht funktioniert. Ich vermute, es liegt am ";" aber ich weiß nicht, wie ich es lösen kann. Dazu finde ich nichts, weil ich nicht weiß, nach was ich suchen soll.

    Ist nur eine kleine Sache, die ich beantwortet brauche. Ich hoffe, dass es nicht allzu viel Aufwand für euch ist.

    Edit:
    .invokeScript gibt es anscheinend nicht mehr, deshalb versuche ich es mit:

    VB.NET-Quellcode

    1. Webbrowser1.Navigate("javascript:parent.setLocation('overAkte'); showAkte(1)")


    Das klappt auch soweit, jedoch nur nicht mit diesem "script". Mit z.B "javascript:clickCat" funktioniert es.
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.

    C#-Quellcode

    1. HtmlDocument doc = webBrowser1.Document;
    2. HtmlElement head = doc.GetElementsByTagName("head")[0];
    3. HtmlElement s = doc.CreateElement("script");
    4. s.SetAttribute("text", "function sayHello() { alert('hello'); }");
    5. head.AppendChild(s);
    6. webBrowser1.Document.InvokeScript("sayHello");


    stackoverflow.com/questions/15…r-control/6222430#6222430
    @Majomi
    Ich habe sowas in der Art bereits gefunden, aber es hat mir nichts gebracht. Dafür sind mir meine Kenntnisse zu niedrig.

    Folgendes steht im HTMLCode(ca.):

    VB.NET-Quellcode

    1. <div style="position:absolute;z-index:2;top:4px;left:100px;width:110px;height:100px;background: url(http://xxx.xxx.xx/xxxx/x.png) repeat;" onclick="parent.setLocation('overAkte'); showAkte(1)" title="Akten" onmouseover="parent.zeigAkte(this.title, 2, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX', null)" onmouseout="parent.verAkte()" class="akte">
    2. </div>


    Und mit deinem Code führt man ja eher ein Script aus, welchem man ein eigenes Attribut gibt oder sowas ähnliches, wenn ich mich nicht komplett irre. Ich würde aber lieber die WebBrowser1.navigate Funktion für sowas nutzen. Zwar würde ich deine Variante testen, aber es kommen keine Ergebnisse dabei raus. Um genau zu sein, passiert einfach gar nichts.

    Tut mir leid für die Lücke an Kenntnissen, ich bin immer noch sehr weit unten in VB.net. Das mit den Controls usw ist mir ziemlich neu und vorangefertigte Functions z.B auch irgendwie. Ich habe mal WebBrowser1.invokeScript genutzt, aber das war so lange her und ich habe auch keine Ahnung mehr, wie ich des genutzt habe. Ich weiß nicht, ob des heute noch geht.
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.
    Versuch einfach mal:
    s.SetAttribute("text", "function sayHello() { parent.setLocation('overAkte'); showAkte(1); }");
    oder

    C#-Quellcode

    1. HtmlElementCollection theElementCollection = default(HtmlElementCollection);
    2. theElementCollection = webBrowser1.Document.GetElementsByTagName("div");
    3. foreach (HtmlElement curElement in theElementCollection)
    4. {
    5. if (curElement.GetAttribute("class").ToString() == "akte")
    6. {
    7. curElement.InvokeMember("onclick"); // könnte auch "click" sein weis ich gerade nicht}
    8. }
    9. }

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Majomi“ ()