Delphi知识中心
www.delphi.ee
提供Delphi技术知识
与Delphi程序员共同进步


在线服务QQ:99923144 随时恭候您的光临
首页 基础知识 WIN系统 组件使用 组件开发 数据库 ACTIVEX 多媒体技术 网络技术 关于
文章类别:网络技术    你尚未登陆,会员功能无法使用,请从 网站首页 登陆。
  WebBrowser中屏蔽alert,confirm脚本对话框  
 
WebBrowser 控件中屏蔽alert,confirm脚本对话框的方法

首先在项目引用里面,选择COM选项卡,添加 Microsoft HTML Object Library

添加mshtml命名空间的引用。

下面看代码


IHTMLWindow2 win = (IHTMLWindow2)hdoc.Window.DomWindow;
string s = "function confirm() {";
s += "return true;";
s += "}";
s += "function alert() {}";
win.execScript(s, "javascript");

这样就可以解决在WebBrowser中因有消息窗口弹出而影响程序运行过程的问题。

稍加改动还可以控制页面跳转,比如原来的alert()方法是弹出一个提示信息,现在修改后的代码不会有任何操作。

如果你在修改后的代码加上一段自己的处理程序就不一样了。当弹出alert对话框时,我就认为这个页面已经处理完成。

现在我需要处理下一个页面。这样的话就在 function alert() {} 的花括号中添加一段javascript的页面跳转脚本就可以拉。

将代码修改为如下。就可以达到理想的效果。以下测试代码中是在执行alert方法时直接将页面导航至空白页。

IHTMLWindow2 win = (IHTMLWindow2)hdoc.Window.DomWindow;
string s = "function confirm() {";
s += "return true;";
s += "}";
s += "function alert() {window.location.href='about:blank';}";
win.execScript(s, "javascript");


==================================================
WebBrowser控件中禁止alert,confirm等对话框的方法 收藏

先引用COM组建mshtml;

然后处理WebBrowser控件的Navigated事件,
代码如下:

Code
private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
IHTMLWindow2 win = (IHTMLWindow2)webBrowser1.Document.Window.DomWindow;
string s = "window.alert = null;\r\nwindow.confirm = null;\r\nwindow.open = null;\r\nwindow.showModalDialog = null;";
win.execScript(s, "javascript");
}

=======================================================

 

在线服务QQ:99923144 Delphi程序员QQ群(139442)
Delphi知识中心 www.delphi.ee 最专业的Delphi技术资料网站