繁体   English   中英

如何从C#WebBrowser执行Javascript函数?

[英]How to execute a Javascript function from a C# WebBrowser?

我正在通过C#和WebBrowser进行一些Web自动化。 我需要单击一个链接,但是由于它会触发Javascript函数,因此显然需要执行代码,而不仅仅是单击元素(即element.InvokeMember(“ click”))。 这是元素的href,它将打开一个Ajax表单:

javascript:__doPostBack("ctl00$cphMain$lnkNameserverUpdate", "")

我试过了:

webBrowser1.Document.InvokeScript("javascript:__doPostBack", new object[] { "ctl00$cphMain$lnkNameserverUpdate", "" });

和:

webBrowser1.Document.InvokeScript("__doPostBack", new object[] { "ctl00$cphMain$lnkNameserverUpdate", "" });

和其他一些东西。 代码被命中,但脚本没有被解雇。 任何想法将不胜感激。

格雷格

顺便说一句,如果有用的话,下面是完整的元素:

<a href="javascript:__doPostBack('ctl00$cphMain$lnkNameserverUpdate','')" onmouseout="window.status=''; return true" onmouseover="window.status='Update Nameservers'; return true" id="ctl00_cphMain_lnkNameserverUpdate" onclick="javascript:Layout.ChangeIframeToSrc('DropinLoad_Domain.aspx?controlRequest=ActionNameserversWithIP');return false;">NS51.DOMAINCONTROL.COM<br/>NS52.DOMAINCONTROL.COM<br/></a>
HtmlDocument doc = browser.Document;
HtmlElement head = doc.GetElementsByTagName("head")[0];
HtmlElement s = doc.CreateElement("script");
s.SetAttribute("text","function sayhello() { alert('hello'); }");
head.AppendChild(s);
browser.Document.InvokeScript("sayHello");

看一下这个链接:

http://msdn.microsoft.com/zh-CN/library/system.windows.forms.webbrowser.objectforscripting.aspx

实际上,我过去曾经使用过它,并且效果很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM