在WebBrowser控件中阻止alert,confirm對話框

在WiinForm使用WebBrowser控件的過程中,常常會被目標網頁上彈出的alert、confirm等對話框打斷工作流程。google了一下,發現有人採用定時器自動送Enter,也有人採用FindWindow等方法來進行自動關閉,其實,我們只需要在目標網頁上執行一段腳本就可以了。

     //禁用目標window的confirm、alert等對話框。
        private void disableConfirm()
        {
            HtmlDocument doc = webBrowser1.Document.Window.Frames["mainFrame"].Document;
            //框架結構中,必須正確的指定目標框架

            IHTMLWindow2 win = (IHTMLWindow2)doc.Window.DomWindow;

            string s = @"function confirm() {";
            s += @"return true;";
            s += @"}";

            s += @"function alert() {}";

            win.execScript(s, "javascript");

        }

爲了使用IHTMLWindow2接口,必須的添加對非託管COM對象的託管包裝,在VS2005中很簡單,只需要在項目引用裏面選擇COM選項卡,添加Microsoft HTML Object Library即可,路徑爲C:/Windows|System32/MSHTML.TLB。在CS文件裏面引入托管包裝的命名空間mshtml即可。

using mshtml;

51bb6cf39da86a5c352acc9c.jpg

存取網頁的DOM元素:

HtmlElement euser = webBrowser1.Document.All["txtUserName"];
HtmlElement bSubmit = webBrowser1.Document.All["Button1"];

euser.SetAttribute("value","想設置的值");                 //設置DOM元素value屬性
bSubmit.InvokeMember("click");                               //激發該元素的click事件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章