6

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

currentElement.InvokeMember("submit");

现在这种方法工作正常。但有时表单可能有一些在提交时单击按钮时调用的 javascript 函数。因此,假设一个表单有一些名为“提交”的按钮图像,当用户按下它时,会调用一个 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>
4

2 回答 2

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

奇迹般有效。

于 2012-04-26T18:28:33.737 回答
2

如果您知道可以使用的图像标签的名称或 ID

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

或者

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

在javascript中调用关联函数

于 2012-05-23T10:07:32.383 回答