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

标签 c# forms webbrowser-control

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

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/

相关文章:

forms - 交响乐 : how to get rid of ugly GET parameters

Angular 2 - 如何使用 ngIf 获取输入的有效状态

c# - 如何重新打开或重置WebBrowser控件?

c# 线程同步 - AutoResetEvent

c# - SignalR OnConnected 与多个服务器和 Redis 背板

c# - WPF 数据模板和自动创建的 viewModel 对象

c# - 如何在循环中获取多个文本框的值

jquery - 自动前进输入字段(多部分序列号)

c# - C# 获取 HTML 元素

c# - 从 WPF Web 浏览器控件读取 json 数据