C#中的webbrowser控件比較好用. 下面本人搜索整理的幾個小技巧.
1. 從C#中取得javascript的變量值.
using mshtml;
using System.Reflection;
IHTMLDocument2 vDocument = webBrowser1.Document.DomDocument as IHTMLDocument2;
IHTMLWindow2 vWindow = vDocument.parentWindow;
Type vWindowType = vWindow.GetType();
object xpt = vWindowType.InvokeMember("_xpt", BindingFlags.GetProperty, null, vWindow, new object[] { });
xpt 就是取得的javascript中的變量"_xpt"的值.
2. 禁止顯示腳本錯誤窗口.
webBrowser1.ScriptErrorsSuppressed = true;
3. 如何取彈出網頁的網址
string newUrl = webBrowser_temp.Document.ActiveElement.GetAttribute("href");
4. 禁止打開新窗口, 在本窗口打開.
4.1 設置屬性.
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//將所有的鏈接的目標,指向本窗體
foreach (HtmlElement archor in this.webBrowser1.Document.Links)
{
archor.SetAttribute("target", "_self");
}
//將所有的FORM的提交目標,指向本窗體
foreach (HtmlElement form in this.webBrowser1.Document.Forms)
{
form.SetAttribute("target", "_self");
}
}
將 WebBrowser 的 AllowWebBrowserDrop 設為 false
將 WebBrowser 的 WebBrowserShortcutsEnabled 設為 false
將 WebBrowser 的 IsWebBrowserContextMenuEnabled 設為 false
這種方法對於javascript打開的鏈接無效.
4.2 攔截新窗口, 在另一個webbrowser控件打開.
private void webBrowser_1_NewWindow(object sender, CancelEventArgs e)
{
WebBrowser webBrowser_temp = (WebBrowser)sender;
string newUrl = webBrowser_temp.Document.ActiveElement.GetAttribute("href");
webBrowser_1.Url = new Uri(newUrl);
e.Cancel = true;
}