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