C# Web 浏览器控件(执行与表单关联的所有 JavaScript)
本文关键字:关联 JavaScript 表单 浏览器 Web 控件 执行 | 更新日期: 2023-09-27 18:31:54
我正在尝试使用网络浏览器控件自动提交表单。我正在使用以下代码提交"
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 中调用关联函数