C# Web 浏览器控件(执行与表单关联的所有 JavaScript)



我正在尝试使用网络浏览器控件自动提交表单。我正在使用以下代码提交"

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>

自从我弄乱 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);

就像一个魅力。

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

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

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

在 JavaScript 中调用关联函数

最新更新