CHtmlView 处理/禁止 JavaScript 脚本错误!
2016-01-25 18:32
323 查看
CSiteControlSite.h
CSiteControlSite.cpp
定义 CreateControlSite 接口
ExpView.h
class CExpView : public CHtmlView
{
...........省略.....
public:
virtual BOOL CreateControlSite(COleControlContainer* pContainer,COleControlSite** ppSite, UINT nID, REFCLSID clsid);
};
ExpView.cpp
BOOL CExpView::CreateControlSite(COleControlContainer* pContainer, COleControlSite** ppSite, UINT nID, REFCLSID clsid)
{
// TODO: 在此添加专用代码和/或调用基类
ASSERT(ppSite != NULL);
*ppSite = new CSiteControlSite(pContainer);
return TRUE;
}
参考来源:
BUG: Proxy Authentication Through IAuthenticate May Fail on Secure URL
用CHTMLView 来处理script脚本错误
#pragma once #include <afxocc.h> #include <afxhtml.h> class CHtmlControlSite : public COleControlSite { public: CHtmlControlSite(COleControlContainer* pParentWnd); ~CHtmlControlSite(); CHtmlView* GetView() const; BEGIN_INTERFACE_PART(DocHostUIHandler, IDocHostUIHandler) STDMETHOD(ShowContextMenu)(DWORD, LPPOINT, LPUNKNOWN, LPDISPATCH); STDMETHOD(GetHostInfo)(DOCHOSTUIINFO*); STDMETHOD(ShowUI)(DWORD, LPOLEINPLACEACTIVEOBJECT, LPOLECOMMANDTARGET, LPOLEINPLACEFRAME, LPOLEINPLACEUIWINDOW); STDMETHOD(HideUI)(void); STDMETHOD(UpdateUI)(void); STDMETHOD(EnableModeless)(BOOL); STDMETHOD(OnDocWindowActivate)(BOOL); STDMETHOD(OnFrameWindowActivate)(BOOL); STDMETHOD(ResizeBorder)(LPCRECT, LPOLEINPLACEUIWINDOW, BOOL); STDMETHOD(TranslateAccelerator)(LPMSG, const GUID*, DWORD); STDMETHOD(GetOptionKeyPath)(OLECHAR **, DWORD); STDMETHOD(GetDropTarget)(LPDROPTARGET, LPDROPTARGET*); STDMETHOD(GetExternal)(LPDISPATCH*); STDMETHOD(TranslateUrl)(DWORD, OLECHAR*, OLECHAR **); STDMETHOD(FilterDataObject)(LPDATAOBJECT, LPDATAOBJECT*); END_INTERFACE_PART(DocHostUIHandler) DECLARE_INTERFACE_MAP() }; class CSiteControlSite : public CHtmlControlSite { public: CSiteControlSite(COleControlContainer *pCnt = NULL) :CHtmlControlSite(pCnt) {} DECLARE_INTERFACE_MAP(); BEGIN_INTERFACE_PART(CmdTargetObj, IOleCommandTarget) STDMETHOD(QueryStatus)(const GUID*, ULONG, OLECMD[], OLECMDTEXT*); STDMETHOD(Exec)(const GUID*, DWORD, DWORD, VARIANTARG*, VARIANTARG*); END_INTERFACE_PART(CmdTargetObj) };
CSiteControlSite.cpp
#include "stdafx.h" #include "SiteControlSite.h" BEGIN_INTERFACE_MAP(CSiteControlSite, COleControlSite) INTERFACE_PART(CSiteControlSite, IID_IOleCommandTarget, CmdTargetObj) END_INTERFACE_MAP() ULONG FAR EXPORT CSiteControlSite::XCmdTargetObj::AddRef() { METHOD_PROLOGUE(CSiteControlSite, CmdTargetObj) return pThis->ExternalAddRef(); } ULONG FAR EXPORT CSiteControlSite::XCmdTargetObj::Release() { METHOD_PROLOGUE(CSiteControlSite, CmdTargetObj) return pThis->ExternalRelease(); } HRESULT FAR EXPORT CSiteControlSite::XCmdTargetObj::QueryInterface(REFIID iid, void FAR* FAR* ppvObj) { METHOD_PROLOGUE(CSiteControlSite, CmdTargetObj) return (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj); } STDMETHODIMP CSiteControlSite::XCmdTargetObj::QueryStatus(const GUID* pguidCmdGroup, ULONG cCmds, OLECMD rgCmds[], OLECMDTEXT* pcmdtext) { METHOD_PROLOGUE(CSiteControlSite, CmdTargetObj) return S_OK; } STDMETHODIMP CSiteControlSite::XCmdTargetObj::Exec(const GUID* pguidCmdGroup, DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG* pvarargIn, VARIANTARG* pvarargOut) { METHOD_PROLOGUE(CSiteControlSite, CmdTargetObj) HRESULT hr = S_OK; if (pguidCmdGroup && IsEqualGUID(*pguidCmdGroup, CGID_DocHostCommandHandler)) { switch (nCmdID) { case OLECMDID_SHOWSCRIPTERROR: { // pvarargOut 设置为TRUE,继续运行此scripts (*pvarargOut).vt = VT_BOOL; (*pvarargOut).boolVal = VARIANT_TRUE; return S_OK; break; } default: hr = OLECMDERR_E_NOTSUPPORTED; break; } } else { hr = OLECMDERR_E_UNKNOWNGROUP; } return (hr); }
定义 CreateControlSite 接口
ExpView.h
class CExpView : public CHtmlView
{
...........省略.....
public:
virtual BOOL CreateControlSite(COleControlContainer* pContainer,COleControlSite** ppSite, UINT nID, REFCLSID clsid);
};
ExpView.cpp
BOOL CExpView::CreateControlSite(COleControlContainer* pContainer, COleControlSite** ppSite, UINT nID, REFCLSID clsid)
{
// TODO: 在此添加专用代码和/或调用基类
ASSERT(ppSite != NULL);
*ppSite = new CSiteControlSite(pContainer);
return TRUE;
}
参考来源:
BUG: Proxy Authentication Through IAuthenticate May Fail on Secure URL
用CHTMLView 来处理script脚本错误
相关文章推荐
- CHtmlView-MFC中文手册
- 使用CHtmlView制作浏览器的简单记录
- 网页如何调用Visual C++函数
- VC对话框程序如何使用chtmlview
- 【LibUIDK界面库系列文章】解析网页中的table内容
- 【LibUIDK界面库系列文章】Web Browser控件避免闪烁
- 浏览器的定制与扩展
- MFC对话框里利用CHtmlView加载界面(三)————JaveScript 调用 MFC
- MFC对话框里利用CHtmlView加载界面(二)————MFC调用JaveScript
- MFC对话框里利用CHtmlView加载界面(一)————加载网页
- MFC对话框里利用CHtmlView加载界面(四)————分层窗口设置
- Gson根据json字符串生成map对象
- js动态创建Form表单并提交
- Javascript 函数声明及使用
- js 把反斜杠\转换成正斜杠/
- 基于 JavaScript 的操作系统你听说过吗?
- JavaScript高级程序设计学习笔记-20160125
- JavaScript函数constructor的作用,意义
- Javascript基本语法
- <jsp:directive.page>