WbeBroswer控件不显示某些网页

本文介绍了WebBrowser控件在.NET Framework 2.0中的使用,用于在桌面程序中嵌入网页内容,如ECharts图表。由于WebBrowser默认使用IE6内核,可能无法正常显示ECharts等依赖现代JS库的内容。尝试通过修改注册表设置内核版本至IE11无效。最终发现问题是ECharts DOM元素未指定width导致不显示,同时在duilib界面库中需要关闭透明属性以避免卡顿。

WebBrowser

简介

WebBrowser 是一个 .NET 控件类,在 .NET Framework 2.0 版中新增。WebBrowser 类使用户可以在窗体中导航网页。

在某些桌面程序中,有时候会用到浏览器来嵌入程序中来显示网页的内容,比如图表类的显示,网页的显示非常漂亮和实现简单,推荐使用百度开源的Echart,这个开源库,使用超级简单。关于显示问题,首先想到了 WebBrowser控件,但是最近再做的一个项目里,显示不出来,因为EChart使用到了js库显示动态画面,而WebBrowser默认IE内核是IE6,太古老,可能是不显示的一个原因。升级本机自带的IE内核并不能解决问题,因为修改该控件的指定内核需要修改注册表。

解决办法
    可以百度关键词:WebBrowser IE内核指定

下面讲解下该办法:
Regedit:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

这里写图片描述
添加自己的程序名,值就是指定的IE内核版本参数,具体见下表
这里我指定的是11000 也就是IE11

说明
11001 (0x2EDF)Internet Explorer 11. Webpages are displayed in IE11 Standards mode, regardless of the !DOCTYPE directive
11000 (0x2AF8)Internet Explorer 11. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode
10001 (0x2711)Internet Explorer 10。网页以IE 10的标准模式展现,页面!DOCTYPE无效
10000 (0x02710)Internet Explorer 10。在IE 10标准模式中按照网页上!DOCTYPE指令来显示网页。Internet Explorer 10 默认值。
9999 (0x270F)Windows Internet Explorer 9. 强制IE9显示,忽略!DOCTYPE指令
9000 (0x2328)Internet Explorer 9. Internet Explorer 9默认值,在IE9标准模式中按照网页上!DOCTYPE指令来显示网页。
8888 (0x22B8)Internet Explorer 8,强制IE8标准模式显示,忽略!DOCTYPE指令
8000 (0x1F40)Internet Explorer 8默认设置,在IE8标准模式中按照网页上!DOCTYPE指令展示网页
7000 (0x1B58)使用WebBrowser Control控件的应用程序所使用的默认值,在IE7标准模式中按照网页上!DOCTYPE指令来展示网页。
FEATURE_BROWSER_EMULATION设置说明

但是!

依然显示不出EChart。使用MFC的控件确认能显示,在duilib界面库实现的程序中不能显示,试了很多办法终于发现是因为EChart的DOM的width不指定就不显示。暂时不知道原因。可能是不能自适应?
同时需要关闭duilib的透明属性,否则浏览器很卡顿 。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值