我正在尝试使用网络浏览器控件自动提交表单。我正在使用以下代码提交”
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);
像魅力一样工作。
关于C# webbrowser 控件(执行与表单关联的所有 javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10276813/