如何隐藏显示HTML5标记的Web浏览器控件(IE)的滚动条和窗口边框

How to hide scrollbars and window borders for a web browser control (IE) that is displaying HTML5 markup?

本文关键字:控件 浏览器 边框 IE 滚动条 Web 窗口 何隐藏 隐藏 显示 HTML5      更新时间:2023-10-16

我有一个MFC对话框窗口,我在其中添加了一个Web浏览器控件(封装Internet Explorer引擎。)以下代码的目标是(暂时)从该控件中删除scrollbars和窗口边框(致电IviewObject :: Draw。)

所以我做:

//'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 Markup一起使用?

我正在阅读本文,其中说:

Web浏览器控件 - 默认情况下 - 永久卡在I 7渲染模式下。即使我们现在达到了IE 11和合理的HTML5兼容浏览器,Web浏览器控件始终使用IE 7渲染引擎。这是因为ActiveX控件的原始版本使用了此模式,并且为向后兼容,控件将继续使用此模式。

解决方法是添加

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

在HTML的<head>中,强迫使用最新的IE渲染引擎,从而使其与HTML5页面"兼容"。