如何隐藏显示HTML5标记的Web浏览器控件(IE)的滚动条和窗口边框?
问题描述:
我有,我加了web browser control(封装Internet Explorer
引擎。)下面的代码的目标是(暂时)从该控件中删除滚动条和窗口边框的MFC对话框窗口(调用IViewObject::Draw。)如何隐藏显示HTML5标记的Web浏览器控件(IE)的滚动条和窗口边框?
所以我做的:
//'m_browser' = is a web browser control of type `CExplorer1`
IDispatch* pHtmlDoc = m_browser.get_Document();
CComPtr<IHTMLDocument2> pHtmlDocument2;
pHtmlDoc->QueryInterface(IID_IHTMLDocument2, (void**)&pHtmlDocument2);
CComPtr<IHTMLElement> pBody;
pHtmlDocument2->get_body(&pBody);
CComPtr<IHTMLStyle> pStyle;
pBody->get_style(&pStyle);
//Remove borders
pStyle->put_borderStyle(CComBSTR("none"));
//Remove scrollbars
pBody->setAttribute(CComBSTR(L"scroll"), CComVariant(L"no"));
这种方法工作,如果我定义了在Web所示的控制的HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
,但如果我把它定义为HTML5:
<!DOCTYPE HTML>
上面的代码不会做任何事情。
任何想法,我应该改变什么,以使其使用HTML5标记?
答
我读this文章,那里说:
Web浏览器控件是 - 默认 - 永久地在IE 7的渲染模式。尽管我们现在可以使用IE 11和合理的HTML5兼容浏览器,但默认情况下,Web浏览器控件始终使用IE 7渲染引擎。这是因为ActiveX控件的原始版本使用了这种模式,并且为了向后兼容,Control继续使用这种过时的,非常不友好的默认设置。
一种解决方法,这是添加
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
在HTML的<head>
,强制使用了最新的IE渲染引擎,从而使其“兼容”与HTML5网页。
尝试在HTML的“
”中添加“'。它有帮助吗? – Steeve@Steeve:谢谢。它解决了这个问题,但创建了新的(不相关的)问题。你能解释一下这个设置对这些API调用的影响吗? – c00000fd
如何使用0调用IHTMLStyle :: borderWidth? –