求C# winform中点击按钮执行网页JS提交表单代码实现~~!
已知网页中定义保存JS代码:
function doSave(obj)
{
obj.action="/lemis"+"/supervise/entBasicInfoAction.do?method=save&form=save";
querybutton2[2].setEnabled(false);
obj.submit();
}
网页中提交表单按钮定义:
<td class="coolButton" onaction="doSave(document.forms[0])"><imgsrc="/lemis/images/icons/save.gif" align=absMiddle> 保存</td>
求实现,点击winform上(不是网页上)的提交按钮,执行此段JS表单提交代码,提交表单。
PS:1.C# winform 中
2.webBrowser控件加载含有上述JS代码的网页.
3.含有此代码的网页位于框架网页中的 mainFrame 框架.
------解决方案--------------------在.Net 2.0当中,使用WebBrowser实现这样的功能很简单!
在.Net 2.0中,整个HTML文档以及其包含的各个HTML元素,都和一个个HtmlDocument、HtmlElement之类的.Net对象对应。因此只要找到这个“保存”按钮对应的HtmlElement对象,为其click事件添加Event Handler即可。
假设HTML源代码如下:
<html>
<body>
<input type="button" id="btnClose" value="关闭" />
</body>
</html>
那么找出该按钮并为之添加Event Handler的代码如下:
HtmlDocument htmlDoc = webBrowser.Document;
HtmlElement btnElement = htmlDoc.All["btnClose"];
if (btnElement != null)
{
btnElement.click += new HtmlElementEventHandler(HtmlBtnClose_Click);
}
其中 HtmlBtnClose_Click是按下Web按钮时的Event Handler。
很简单吧?那么稍稍高级一点的——我们都知道一个HTML元素可能有很多各种各样的事件,而HtmlElement这个类只给出最常用、共通的几个。那么,如何响应其他事件呢?这也很简单,只需要调用HtmlElement的AttachEventHandler就可以了:
btnElement.AttachEventHandler("onclick", new EventHandler(HtmlBtnClose_Click));
//这一句等价于上面的 btnElement.click += new HtmlElementEventHandler(HtmlBtnClose_Click);
对于其他事件,把"onclick"换成该事件的名字就可以了。例如:
formElement.AttachEventHandler("onsubmit", new EventHandler(HtmlForm_Submit));
对于你的情况,是图像按钮,那么先找到图像!
HtmlElement Submit;
HtmlElementCollection hec = this.webBrowser1.Document.GetElementsByTagName("img");
foreach (HtmlElement he in hec)
{
if he.GetAttribute("src") == "lemis/images/icons/save.gif")
{
Submit = he;//找到按钮
Submit.InvokeMember("click");//提交
break;
}
}
<td class="coolButton" onaction="doSave(document.forms[0])"><imgsrc="/lemis/images/icons/save.gif" align=absMiddle> 保存</td>