C#webbrowser控件技巧(取得javascript變量值,禁止顯示腳本錯誤)


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM