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
相關文章
- javascript中的彈出對話方塊JavaScript
- JavaScript彈出儲存對話方塊JavaScript
- Delphi中點選網頁彈出的Alert對話方塊的確定按鈕網頁
- Java 中彈出對話方塊的幾種方式Java
- 給應用程式加個彈出對話方塊
- 關於bootstrap彈出二級對話方塊的使用boot
- iOS專案開發實戰——彈出提示對話方塊iOS
- ASP.NET_頁面中彈出對話方塊幫助類ASP.NET
- 直播視訊app原始碼,底部彈出的列表對話方塊APP原始碼
- android漂亮的對話方塊專案sweet-alert-dialogAndroid
- 一對一直播app開發,自定義彈出對話方塊的樣式APP
- 原生js實現的點選彈出螢幕居中對話方塊效果JS
- #在ios9及以上系統中建立對話方塊並彈出iOS
- 直播平臺原始碼,簡單實現 彈出確認 取消對話方塊原始碼
- Java在Swing中如何實現彈出一個對話方塊的效果?Java
- pageoffice6 版本線上開啟檔案彈出網頁對話方塊網頁
- 對話方塊函式函式
- 登入對話方塊
- 一個js編寫全選、彈出對話方塊、ajax-json的案例JSON
- ASP.NET下載檔案(彈出開啟儲存檔案對話方塊)ASP.NET
- c#中的模態對話方塊和非模態對話方塊C#
- [MFC]選擇目錄對話方塊和選擇檔案對話方塊
- flutter demo (四):對話方塊Flutter
- Javascript檔案對話方塊JavaScript
- win10安裝軟體彈出的那個對話方塊怎麼關掉Win10
- Win10系統開機總自動彈出onedrive對話方塊如何解決Win10
- 在C#中單擊右鍵新增引用時彈出錯誤提示對話方塊C#
- Chrome 對於 JavaScript 對話方塊的新策略 —— 建議不要使用 alert(), confirm(), 和 prompt()ChromeJavaScript
- 實現對gridview刪除行時彈出確認對話方塊的一種簡單方法View
- React中的模式對話方塊React模式
- 在 Flutter 使用 GetX 對話方塊Flutter
- Qt 對話方塊新增工具欄QT
- 如何自學qt(4)——對話方塊QT
- QT 等待對話方塊/進度QT
- android 多項對話方塊Android
- Android Dialog對話方塊Android
- DialogPane對話方塊佈局
- SAP Spartacus 自定義Popover指令,如何實現彈出對話方塊自動關閉功能