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

Posted

技术标签:

【中文标题】如何隐藏显示 HTML5 标记的 Web 浏览器控件 (IE) 的滚动条和窗口边框?【英文标题】:How to hide scrollbars and window borders for a web browser control (IE) that is displaying HTML5 markup? 【发布时间】:2016-12-22 10:21:29 【问题描述】:

我有一个 MFC 对话窗口,我在其中添加了一个 web browser control(它封装了 Internet Explorer 引擎。)以下代码的目标是(暂时)从该控件中删除滚动条和窗口边框(调用 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 标记一起使用吗?

【问题讨论】:

尝试在 HTML 的 &lt;head&gt; 中添加 &lt;meta http-equiv="X-UA-Compatible" content="IE=edge" /&gt;。有帮助吗? @Steeve:谢谢。它解决了这个问题,但创造了新的(不相关的)问题。您能解释一下该设置究竟是如何影响这些 API 调用的吗? 用 0 调用 IHTMLStyle::borderWidth 怎么样? 【参考方案1】:

我正在阅读this 文章,上面写着:

Web 浏览器控件 - 默认情况下 - 永远停留在 IE 7 呈现模式。即使我们现在已经升级到 IE 11 和一个合理兼容 HTML5 的浏览器,Web 浏览器控件在默认情况下始终使用 IE 7 渲染引擎。这是因为 ActiveX 控件的原始版本使用了这种模式,并且为了向后兼容,控件继续使用这种过时且对 HTML5 非常不友好的默认设置。

解决方法是添加

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

在 HTML 的 &lt;head&gt; 中,强制使用最新的 IE 渲染引擎,从而使其与 HTML5 页面“兼容”。

【讨论】:

以上是关于如何隐藏显示 HTML5 标记的 Web 浏览器控件 (IE) 的滚动条和窗口边框?的主要内容,如果未能解决你的问题,请参考以下文章

如何控制html5 video 控制条显示和隐藏时间

HTML5基础

Html5之基础-4 HTML文本

在 HTML5 画布上绘制旋转文本

如何使用HTML5改进移动Web应用开发

HTML5 文本标记