TWebBrowser禁止弹出Alert对话框
以前介紹過通過編寫Webbrowser1的OnDocumentComplete事件響應代碼可以攔截網頁彈出的Alert等對話框,代碼如下:
procedure?TForm1.WebBrowser1DocumentComplete(Sender:?TObject;
??const?pDisp:?IDispatch;?var?URL:?OleVariant);
begin
??((Sender?as?TWebBrowser).Document?as?IHtmlDocument2).parentWindow.execScript('window.alert=function(){}',?'javascript');
end;
但是此方法對于含有框架的網頁,而Alert對話框又是由子框架中的網頁腳本彈出的,是無法攔截的。原因是:雖然每個框架網頁文檔加載完成都會引發OnDocumentComplete事件,但傳入的Sender參數始終是WebBrowser1本身,該事件響應代碼對子框架中的網頁文檔無效。注意到傳入的第二個參數pDisp是包含了加載完成的框架的接口,通過這個接口可以獲取框架網頁的文檔的引用,所以利用該參數進行處理就能真正攔截網頁彈出的Alert對話框,具體代碼如下:
procedure?TForm1.WebBrowser1DocumentComplete(Sender:?TObject;
??const?pDisp:?IDispatch;?var?URL:?OleVariant);
var
??iWB:?IWebBrowser2;
begin
??if?pDisp.QueryInterface(IID_IWebBrowser2,?iWB)?=?s_ok?then
??begin
????(iWB.Document?as?IHTmlDocument2).parentWindow.execScript('window.alert=function(){}','javascript');
??end;
end;
以上代碼需引用單元:MsHtml
總結
以上是生活随笔為你收集整理的TWebBrowser禁止弹出Alert对话框的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 飞鸽_飞鸽传书_飞鸽传书2010_飞鸽传
- 下一篇: Delphi处理TWebBrowser的