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");
string s = "function confirm() {";
s += "return true;";
s += "}";
s += "function alert() {}";
win.execScript(s, "javascript");
这样就可以解决在WebBrowser中因有消息窗口弹出而影响程序运行过程的问题。
稍加改动还可以控制页面跳转,比如原来的alert()方法是弹出一个提示信息,现在修改后的代码不会有任何操作。
如果你在修改后的代码加上一段自己的处理程序就不一样了。当弹出alert对话框时,我就认为这个页面已经处理完成。
现在我需要处理下一个页面。这样的话就在 function alert() {} 的花括号中添加一段javascript的页面跳转脚本就可以拉。
将代码修改为如下。就可以达到理想的效果。以下测试代码中是在执行alert方法时直接将页面导航至空白页。
Code