C#webbrowser控件(执行与表单关联的所有javascripts)

时间:2012-04-23 07:56:10

标签: c# forms webbrowser-control

我正在尝试使用webbrowser控件自动提交表单。我使用以下代码提交“

currentElement.InvokeMember("submit");

现在这种方法运行正常。但有时一个表单可能有一些javascript函数,在提交时按钮点击调用。所以,假设一个表单有一个名为“Submit”的按钮图像,当用户按下它时,调用一个javascript函数somefunction(),然后提交表单。

问题是当我使用上面的方法InvokeMember然后它只提交表单并且不执行相关的脚本(在这种情况下是somefunction())而且我必须手动编写代码

webBrowser1.Document.InvokeScript("somefunction");

但是这需要事先知道是否有某些功能。有什么方法我提交表单,它会自动运行所有相关的JavaScript?

我不知道用户点击提交表单的按钮名称或ID。因为在某些情况下,它甚至可能没有ID或名称。

<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>

2 个答案:

答案 0 :(得分:2)

已经有一段时间了,因为我已经搞乱了WebBrowser控件,但我曾经让它为我跳过篮球。我过去曾经遇到过这个问题。

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

当你得到一个Form对象时,从OnSubmit中取出字符串并运行它以在提交表单之前执行它:

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

像魅力一样。

答案 1 :(得分:2)

如果您知道图片代码的名称或ID,则可以使用

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

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

在javascript中调用关联函数