6 Stimmen

C#-Webbrowser-Steuerelement (führt alle mit dem Formular verbundenen Javascripts aus)

Ich versuche, das Formular mithilfe des Webbrowser-Steuerelements automatisch zu übermitteln. Ich verwende den folgenden Code zum Übermitteln"

currentElement.InvokeMember("submit");

Jetzt funktioniert diese Methode gut. Aber manchmal ein Formular kann einige Javascript-Funktion, die auf Schaltfläche klicken zum Zeitpunkt der Übermittlung aufgerufen wird. So sagen wir, wenn ein Formular einige Schaltfläche Bild namens "Submit" und wenn ein Benutzer drückt es, ein Javascript-Funktion somefunction() aufgerufen wird und dann Form eingereicht wird.

Das Problem ist, wenn ich die obige Methode InvokeMember verwenden, dann es nur das Formular übermittelt und führt nicht die zugehörigen Skripte (in diesem Fall somefunction()) und ich muss manuell Code schreiben

webBrowser1.Document.InvokeScript("somefunction");

Dazu muss ich aber vorher wissen, ob es eine Funktion gibt. Gibt es eine Möglichkeit, ich übermitteln Form und es wird automatisch alle zugehörigen Javascript ausführen?

Und ich weiß nicht, Schaltfläche Name oder ID entweder, die vom Benutzer angeklickt wird, um Formular zu senden. Denn in einigen Fällen kann es nicht einmal ID oder Name für z. B. haben.

<span class="btn" onclick="somefunction()">
<img style="cursor:pointer" title="Submit" alt="Submit" src="http://stackoverflow.com/imagesbutton.png?2012">
<div id="s" style=""></div>
</span>

2voto

Derreck Dean Punkte 3568

Es ist eine Weile her, seit ich mit dem WebBrowser-Steuerelement herumgepfuscht habe, aber ich habe es durch Reifen für mich springen lassen. Ich habe über dieses Problem in der Vergangenheit gekommen.

http://www.codeproject.com/Tips/60924/Using-WebBrowser-Document-InvokeScript-to-mess-aro

Wenn Sie eine Form Objekt, nehmen Sie die Zeichenkette aus dem OnSubmit und führen Sie diese aus, bevor Sie das Formular absenden:

object[] codeString = {"myObject.setVariable(0);"};
webBrowser1.Document.InvokeScript("eval",codeString);

Funktioniert wie ein Zauber.

2voto

carminePat Punkte 159

Wenn Sie den Namen oder die ID des Bild-Tags kennen, können Sie

webBrowser1.Document.GetElementById("button").InvokeMember("click");

o

webBrowser1.Document.GetElementByName("button").InvokeMember("click");  

zum Aufrufen der Assoziationsfunktion in Javascript

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X