ACTIVEX浏览器控件如何防止弹出脚本错误
来源:互联网 发布:淘宝网有线麦克风话筒 编辑:程序博客网 时间:2024/05/22 11:52
转载自:http://xjchilli.blog.163.com/blog/static/4534773920108188450277/
在IE浏览器浏览网页时经常遇到脚本错误,IE的处理方法是在左下角状态栏显示一个黄色的感叹号。
但是在MFC对话框程序里直接插入的ACTIVEX浏览器控件里,该脚本错误会直接弹出。
如何避免弹出该错误呢?
1.设置浏览器控件的Silent属性为True,直接在控件属性里设置。(用这个方法最简单了)
或动态创建时设置。
p_WebBrowserCtrl1 = new CWebBrowser2;
p_WebBrowserCtrl1->Create("",WS_CHILD|WS_VISIBLE,rt,this,IDC_EXPLORER3);
p_WebBrowserCtrl1->SetSilent(0);
2.以上方法有一个缺点,就是普通正常的脚本窗口也弹不出来了。要想只屏蔽错误窗口,可以在控件的NavigateComplete2响应函数中处理错误:
首先,创建错误处理类,可以单独新建一个头文件,最后将头文件包含在主窗口中。
view source
print?
01.class ErrorHandler : public IDispatch
02.{
03.public:
04. STDMETHODIMP_(ULONG) AddRef(){return 1;}
05. STDMETHODIMP_(ULONG) Release(){return 0;}
06. STDMETHODIMP QueryInterface(REFIID iid, LPVOID* ppvObj)
07. {
08. *ppvObj = NULL;
09.
10. if(IsEqualIID(iid, IID_IUnknown) || IsEqualIID(iid, IID_IDispatch))
11. {
12. *ppvObj = this;
13. AddRef();
14. return S_OK;
15. }
16.
17. return E_NOINTERFACE;
18. }
19.
20. STDMETHODIMP GetTypeInfoCount(unsigned int*){return E_NOTIMPL;}
21. STDMETHODIMP GetTypeInfo(unsigned int, LCID, ITypeInfo**){return E_NOTIMPL;}
22. STDMETHODIMP GetIDsOfNames(REFIID, LPOLESTR*, unsigned int, LCID, DISPID*){return E_NOTIMPL;}
23.
24. STDMETHODIMP Invoke(DISPID dispid,
25. REFIID, LCID, unsigned short,
26. DISPPARAMS* pdispparams,
27. VARIANT* pvarResult,
28. EXCEPINFO*, unsigned int*)
29. {
30. // onerror处理
31. // pdispparams->rgvarg[0], error message
32. // pdispparams->rgvarg[1], url
33. // pdispparams->rgvarg[2], line
34.
35. pvarResult->vt = VT_BOOL;
36. pvarResult->boolVal = -1; // return true
37. return S_OK;
38. }
39.}m_dispErr;
然后在控件的NavigateComplete2函数中增加如下:
view source
print?
01.void XXXXDlg::NavigateComplete2Explorer1(LPDISPATCH pDisp, VARIANT* URL)
02.
03.{
04.IWebBrowser2 *thisBrowser = NULL;
05. IDispatch *docDisp = NULL;
06. IHTMLDocument2 *doc = NULL;
07. HRESULT hr = S_OK;
08.
09. docDisp = p_WebBrowserCtrl1->GetDocument();
10.
11. hr = docDisp->QueryInterface(IID_IHTMLDocument2, reinterpret_cast<void**>(&doc));
12. IHTMLWindow2 * pIhtmlwindow2 = NULL;
13. doc->get_parentWindow(&pIhtmlwindow2);
14.
15. VARIANT disp;
16. VariantInit(&disp);
17. disp.vt = VT_DISPATCH;
18. disp.pdispVal = &m_dispErr; // dispatcher object
19. pIhtmlwindow2->put_onerror(disp);
20.}
- ACTIVEX浏览器控件如何防止弹出脚本错误
- 浏览器控件 BebBrowser 脚本错误
- 编写浏览器不弹出警告的ActiveX控件
- 编写浏览器不弹出警告的ActiveX控件
- 编写浏览器不弹出警告的ActiveX控件
- 编写浏览器不弹出警告的ActiveX控件
- 编写在浏览器中不弹出警告的ActiveX控件
- VC编写浏览器中不弹出警告的ActiveX控件
- myeclipse 10 自带的浏览器弹出脚本错误解决办法
- 多浏览器支持ActiveX控件
- 怎样不让webbrowser控件不弹出脚本错误提示
- 禁止Webbrowser控件的弹出脚本错误对话框
- C# 禁止 Webbrowser 控件的弹出脚本错误对话框
- C# 禁止 Webbrowser 控件的弹出脚本错误对话框
- Webbrowser控件中屏蔽弹出脚本错误对话框
- Webbrowser控件中屏蔽弹出脚本错误对话框
- WebBrowser控件中屏蔽弹出脚本错误对话框
- 如何注册ActiveX控件
- PL/SQL 联合数组与嵌套表
- 防御式编程
- Linux上运行多个JBoss服务
- windows下的txt文件传到Linux下中文乱码问题
- 让你的软件飞起来:RGB转为YUV
- ACTIVEX浏览器控件如何防止弹出脚本错误
- 对一些大数库的简介
- Google - Guice 入门介绍
- 10条RAC常用优化方向
- 2012-3-20 工作总结(约1年)
- freeMarker 常用
- 巧用QSignalMapper分类有序地处理大量信号(含源码)
- 移植Android3.0 SDK到freescale imx51_bbg总结
- webconfig中httpRuntime 字段的描述