TWebBrowser禁止弹出Alert对话框
以前介紹過(guò)通過(guò)編寫(xiě)Webbrowser1的OnDocumentComplete事件響應(yīng)代碼可以攔截網(wǎng)頁(yè)彈出的Alert等對(duì)話框,代碼如下:
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;
但是此方法對(duì)于含有框架的網(wǎng)頁(yè),而Alert對(duì)話框又是由子框架中的網(wǎng)頁(yè)腳本彈出的,是無(wú)法攔截的。原因是:雖然每個(gè)框架網(wǎng)頁(yè)文檔加載完成都會(huì)引發(fā)OnDocumentComplete事件,但傳入的Sender參數(shù)始終是WebBrowser1本身,該事件響應(yīng)代碼對(duì)子框架中的網(wǎng)頁(yè)文檔無(wú)效。注意到傳入的第二個(gè)參數(shù)pDisp是包含了加載完成的框架的接口,通過(guò)這個(gè)接口可以獲取框架網(wǎng)頁(yè)的文檔的引用,所以利用該參數(shù)進(jìn)行處理就能真正攔截網(wǎng)頁(yè)彈出的Alert對(duì)話框,具體代碼如下:
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
總結(jié)
以上是生活随笔為你收集整理的TWebBrowser禁止弹出Alert对话框的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 飞鸽_飞鸽传书_飞鸽传书2010_飞鸽传
- 下一篇: Delphi处理TWebBrowser的