加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi Webbrowser和CSS3

发布时间:2020-12-15 04:23:45 所属栏目:大数据 来源:网络整理
导读:我的应用程序将一些 HTML加载到Webbrowser(来自 bsalsa.com的TEmbeddedWB),我想使用一些CSS3功能,如border-radius.我安装了Internet Explorer 9,因为它支持border-radius属性.好的,只是为了测试该属性是否在Delphi应用程序中运行,我创建了一个带有Memo和TEmb
我的应用程序将一些 HTML加载到Webbrowser(来自 bsalsa.com的TEmbeddedWB),我想使用一些CSS3功能,如border-radius.我安装了Internet Explorer 9,因为它支持border-radius属性.好的,只是为了测试该属性是否在Delphi应用程序中运行,我创建了一个带有Memo和TEmbeddedWB的新项目.在Memo1OnChange事件中,我使Webbrowser加载备忘录中的任何文本.然后我在备忘录中输入以下文字:
<div style="background-color:green;  border-style: solid; border-width: 2px;
 border-radius: 10px 10px 10px 10px; width:200px; height:200px;"></div>

webbrowser显示绿色框,但没有border-radii!然后我尝试将其保存到文件中,并在IE9中加载它,并且border-radii清晰可见.

我还将注册表项FEATURE_BROWSER_EMULATION设置为我的Project1.exe,值为9999,对于64位内容,将Wow6432Node中的键设置为相同.

我还检查了针对www.WhatsMyUserAgent.com的Useragent,它说我正在运行MSIE9.0

还有什么我需要做的吗?

编辑 – 修复: – 显然我需要在我的文档中使用以下Metatag:

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

解决方法

问题是我的HTML代码(参见OP)不包括以下内容:
<meta http-equiv="X-UA-Compatible" content="IE=9" />

通过这样做,您可以避免必须修改注册表,因为上面强制Webbrowser在IE9标准模式下呈现.默认情况下,TWebbrowser组件设置为IE7.

我通过上面有和没有注册表修改来测试这个,并且它有效,因为我安装了IE9.

当然,如果您自己创建文档,或者找到一些将其注入文档的偷偷摸摸的方式,您只能确保上面的代码存在.如果你想在第三方网站上使用CSS3,那么你需要注册表项(除非他们在文档中有上述代码).

这是注册表项:HKEY_CURRENT_USER / Software / Microsoft / Internet Explorer / Main / FeatureControl / FEATURE_BROWSER_EMULATION.添加一个DWORD键,并将其命名为YOURAPPNAME.exe(在我的情况下,为Project1.exe).将值设置为以下之一:

9999 (0x270F):  Internet Explorer 9. Webpages are displayed in IE9 Standards mode,regardless of the !DOCTYPE directive.
9000 (0x2328):  Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.
8888 (0x22B8):  Webpages are displayed in IE8 Standards mode,regardless of the !DOCTYPE directive.
8000 (0x1F40):  Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode.
7000 (0x1B58):  Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode.

(自MSDN起)

由于我想强制使用IE9标准,我的Regedit窗口将如下所示:

通过这样做,您告诉您的应用程序中的Webbrowser您要使用IE9标准(CSS3和HTML5的东西).现在,我的OP中的代码仍然无效,即使我们刚刚这样做了.为什么?因为我错过了一个doctype.通过添加doctype,边界半径属性起作用.

希望这对其他人面临同样问题很有帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读