没有合适的资源?快使用搜索试试~ 我知道了~
c#对WebBrowser的扩展资料汇总.docx
需积分: 10 1 下载量 11 浏览量
2019-07-09
19:49:20
上传
评论
收藏 650KB DOCX 举报
温馨提示
试读
64页
对c#原有WebBrowser的扩展讲解,适合用于对WebBrowser的扩展开发
资源推荐
资源详情
资源评论
C#Webbrowser 中屏蔽弹出窗口及脚本错误提示
当 IE 浏览器遇到脚本错误时浏览器,左下角会出现一个黄色图标,点击可以查看脚本错误
的详细信息,并不会有弹出的错误信息框。当我们使用 WebBrowser 控件时有错误信息框
弹出,这样程序显的很不友好,而且会让一些自动执行的程序暂停。我看到有人采取的解
决方案是做一个窗体杀手程序来关闭弹出的窗体。今天探讨的方法是从控件解决问题。
1、SHDocVw.dll
在 COM 时代我们使用的 WebBrowser 控件是 SHDocVw.dll。屏蔽错误信息的方法很简单
使用下面的一句就可以搞定。
[c-sharp] view plain copy print ?
1. WebBrowser1.Silent=true;
2、.Net 中
在.Net 中提供了托管的 WebBrowser 可供我们使用,当然我们仍然可以在.Net 中使用
COM 组建 SHDocVw.dll,如果使用 SHDocVw.dll
处理错误方式和上面的方法一样。但如果我们是使用.Net 组件如何解决这个问题呢?
在.Net 中提供了托管的 WebBrowser 可供我们使用,当然我们仍然可以在.Net 中使用
COM 组建 SHDocVw.dll,如果使用 SHDocVw.dll
处理错误方式和上面的方法一样。但如果我们是使用.Net 组件如何解决这个问题呢?
[c-sharp] view plain copy print ?
1. webBrowser1.ScriptErrorsSuppressed=true;
(据说在.net framework2.0 以前是这样,我没有使用过)
那么在.net framework2.0 中如何解决这个问题呢?
有一种方法不能彻底解决,可以部分解决问题这里也介绍给大家。
[c-sharp] view plain copy print ?
1. //捕获控件的错误
2. this.WebBrowser.Document.Window.Error+=newHtmlElementErrorEventHand
ler(Window_Error);
3. //对错误进行处理
4. voidWindow_Error(objectsender,HtmlElementErrorEventArgse)
5. {
6. //自己的处理代码
7. e.Handled=true;
8. }
3、上面的方法对于多个框架嵌套等等的情形还是不能很好的解决。
捕获控件的错误
对错误进行处理
! "
#
自己的处理代码
$
%
为了彻底解决这个问题,我们借助 AxWebBrowser 来解决 WebBrowser 的问题。
我们定义一个自己的类,他的父类是 WebBrowser,以后使用这个类就可以了。在这个类
的定义中需要引用 SHDocVw。
[c-sharp] view plain copy print ?
1. classEWebBrowser:System.Windows.Forms.WebBrowser
2. {
3. SHDocVw.IWebBrowser2Iwb2;
4.
5. protectedoverridevoidAttachInterfaces(objectnativeActiveXObjec
t)
6. {
7. Iwb2=(SHDocVw.IWebBrowser2)nativeActiveXObject;
8. Iwb2.Silent=true;
9. base.AttachInterfaces(nativeActiveXObject);
10. }
11.
12. protectedoverridevoidDetachInterfaces()
13. {
14. Iwb2=null;
15. base.DetachInterfaces();
16. }
17. }
18.
19.
20.
21. //项目中添加 Micrsoft.mshtml 引用
22. usingmshtml;
23.
24. privatevoidwebBrowser1_Navigated(objectsender,WebBrowserNavigatedE
ventArgse)
25. {
26. IHTMLDocument2vDocument=(IHTMLDocument2)webBrowser1.Document.Do
mDocument;
27. vDocument.parentWindow.execScript(
28. "functionalert(str){if(str=='zswang')confirm(str);}","javaSc
ript");
29. }
30.
31. //frame 结构
32.
33. privatevoidwebBrowser1_Navigated(objectsender,WebBrowserNavigatedE
ventArgse)
34. {
35. IHTMLDocument2vDocument=(IHTMLDocument2)webBrowser1.Document.Do
mDocument;
36. foreach(IHTMLElementvElementinvDocument.all)
37. if(vElement.tagName.ToUpper()=="FRAME")
38. {
39. IHTMLFrameBase2vFrameBase2=vElementasIHTMLFrameBase2;
40. vFrameBase2.contentWindow.execScript(
41. "functionalert(str){confirm('['+str+']');}","jav
aScript");
42. }
43. }
4、屏蔽其它窗口
[c-sharp] view plain copy print ?
1. (wb.ActiveXInstanceasSHDocVw.WebBrowser).NavigateComplete2+=ne
wDWebBrowserEvents2_NavigateComplete2EventHandler(wb_NavigateComplete
2);//wb 是一个 Webbrowser 控件
2.
3. //屏蔽一些弹出窗口
4. voidwb_NavigateComplete2(objectpDisp,refobjectURL)
5. {
6. mshtml.IHTMLDocument2doc=(wb.ActiveXInstanceasSHDocVw.WebBrow
ser).Documentasmshtml.IHTMLDocument2;
7. doc.parentWindow.execScript("window.alert=null","javascript");
8. doc.parentWindow.execScript("window.confirm=null","javascript");
9. doc.parentWindow.execScript("window.open=null","javascript");
$ & ' (
#
) * + * +
, $* - $ !
#
* + ) * +. $ , /
* +
$ , $* - $ $ , /0! .
%
$* - $ .
#
* +
$ $* - $ .
%
%
10. doc.parentWindow.execScript("window.showModalDialog=null","javasc
ript");
11. doc.parentWindow.execScript("window.close=null","javascript");
5、自动确定弹出对话框
Q:winform 中如何实现自动点击 webbrowser 弹出对话框中的确定按钮
A:
[c-sharp] view plain copy print ?
1. //usingmshtml;
2. //usingSHDocVw;
3. privatevoidForm1_Load(objectsender,EventArgse)
4. {
5. this.webBrowser1.Navigate("http://localhost:28512/
WebSite2/Default.aspx");
6. SHDocVw.WebBrowserwb=this.webBrowser1.ActiveXInstancea
sSHDocVw.WebBrowser;
7. wb.NavigateComplete2+=newSHDocVw.DWebBrowserEvents2_Nav
igateComplete2EventHandler(wb_NavigateComplete2);
8.
9. }
10.
11. voidwb_NavigateComplete2(objectpDisp,refobjectURL)
12. ...{
13. mshtml.IHTMLDocument2doc=(this.webBrowser1.ActiveXInsta
nceasSHDocVw.WebBrowser).Documentasmshtml.IHTMLDocument2;
14. doc.parentWindow.execScript("functionalert(str){return''
}","javascript");
, /* $ $ )
屏蔽一些弹出窗口
1$ 2$ 3 + ! " -
#
* 456 + , /
$ 7 8 $
$ 7 8
$ 7 8
$ 7 8
$ 7 8
剩余63页未读,继续阅读
资源评论
码无痕
- 粉丝: 3
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功