2009-05-20 46 views
0

我正在通過C#和WebBrowser進行一些Web自動化。有一個我需要'點擊'的鏈接,但是因爲它激發了一個Javascript函數,顯然這個代碼需要被執行,而不是僅僅點擊元素(即element.InvokeMember(「click」))。下面是爲元素,這將打開一個Ajax形式在href:如何從C#WebBrowser執行Javascript函數?

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

我已經試過:

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

和:

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

和其他一些東西。代碼被擊中,但腳本不會被解僱。任何想法將不勝感激。

格雷格

BTW這裏的情況下完整的元素是非常有用:

<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> 

回答

0
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");