设置WebBrowser内核渲染模式
前不久开发一个项目,是采用WebBrowser作为外壳,加载网页,由于网页是采用html5来进行开发的,当通过WebBrowser加载网页后,html5中的特性
都无法正常显示,而通过ie浏览器打开时能够正常显示,经过研究发现WebBrowser默认是通过ie7的兼容模式来进行渲染,因此html5的特性无法显示。那么
我们该如何更改WebBrowser内核的渲染模式呢?
Internet Explorer Architecture
首先了解一下IE的整个架构,如下图

ShDocVw 及以下就是WebBrowser的内容,而Browser UI和IE自己的一些特有的功能不属于WebBrowser所有。 当然,不是说要做自己的基于IE的浏览器
就非得用WebBrowser, 我们完全可以直接使用 MSHTML 去控制和绘制DOM,跳过WebBrowser。
不少软件都内嵌了IE的WebBrowser控件(也就是MSHTML.dll)来显示网页, 当用户机器升级到某个IE版本时, WebBrowser控件也会随之升级到相应的
IE版本对应的渲染引擎。为了保证这些使用WebBrowser控件的应用软件能够工作起来和原来一样,不同IE版本的WebBrowser控件在默认情况下使用了IE7 的
渲染模式。
设置WebBrowser渲染模式
如下,一个WebBrowser加载一个为w3school的网页,其中包含一个video标签,IE默认情况下是使用IE7兼容模式渲染,预期是video是无法显示的。
|
<Grid> <WebBrowser Source="http://www.w3school.com.cn/tiy/t.asp?f=html5_video_dom"></WebBrowser> </Grid> |
运行效果如下:

提示"Your browser does not support HTML5 video",说明WebBrowser中默认不是采用本地机器IE版本对应的模式来渲染的,接下来我们通过修改注册表,来使
WebBrowser支持HTML5的属性,既采用更高ie版本的内核来进行渲染。
修改注册表设置WebBrowser内核的渲染模式
1、安装包在安装的时候,先从注册表里获取到系统的IE 版本号,如果是 IE 8 以下,就跳过本逻辑。版本号的获取可以从这里读取:
32位系统:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Version
64位系统:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Version
2、在注册表对应的位置创建键值,键为用到 web browser 控件的程序的名称,例如 WebBrowser.exe (不需要完整的路径,带扩展名的完整文件名就可以了),值
为第一步获取到的版本值。MSDN 上显示一共有 9 个枚举值(http://msdn.microsoft.com/en-us/library/ee330730%28v=vs.85%29.aspx#browser_emulation),可以根据实际情
况来设置,例如 十进制的9。注册表的位置为:
32位系统:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
64位系统:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
示例代码
|
var exeName = Process.GetCurrentProcess().ProcessName + ".exe"; try FEATURE_BROWSER_EMULATION", true); { |
修改注册表之后运行效果如下:

说明大功告成了!
设置WebBrowser内核渲染模式的更多相关文章
- 设置UIImage的渲染模式:UIImage.renderingMode
设置UIImage的渲染模式:UIImage.renderingMode 着色(Tint Color)是iOS7界面中的一个.设置UIImage的渲染模式:UIImage.renderingMode重 ...
- iOS UITabBarItem 选中图的颜色,设置UIimage的渲染模式
UITbarController之前有在这篇文章讲解:http://www.cnblogs.com/niit-soft-518/p/4447940.html 如果自定义了UITabBarItem的图片 ...
- 设置Image渲染模式使用TintColor
通过使用控件Tint Color,例如UIImageView,UIButton等 设置UIImage的渲染模式,使你用一张图片可以渲染成不同颜色,例如设置UIImage的渲染模式:UIImage.re ...
- UIImage加载图片的区别和渲染模式
前言 关于本地图片UIImage的加载问题,还是需要注意的.不同的加载处理方式,在效率和性能上还是有差异的. 今天,我们来讲讲UIImage的加载应该选择什么样的API来加载! 两种API 这两种AP ...
- WebBrowser与IE的关系,如何设置WebBrowser工作在IE9模式下?
原文 WebBrowser与IE的关系,如何设置WebBrowser工作在IE9模式下? 一.问题的提出 偶然发现,Winform里的WebBrowser和IE实际安装的版本似乎并不同步,很有趣! 下 ...
- C#:设置webBrowser框架与系统相对应的IE内核版本
通常情况下,我们直接调用C#的webBrowser控件,默认的浏览器内核是IE7. 那么如何修改控件调用的默认浏览器版本呢? /// <summary> /// 修改注册表信息来兼容当前 ...
- winfrom设置webBrowser框架默认的IE内核版本
要实现设置webBrowser框架默认的IE内核版本的功能需要三个方法 1:修改注册表信息来兼容当前程序 /// <summary> /// 修改注册表信息来兼容当前程序 /// /// ...
- C#设置WebBrowser使用Edge内核
原文:C#设置WebBrowser使用Edge内核 1. 问题描述 用C#写了一个小工具, 需要显示网页上的内容, 但WebBrowser使用的是IE内核, 不能很好的展示网页 2. 解决方法 通过一 ...
- IE WebBrowser内核设置
public class IEVersion { /// <summary> /// IE WebBrowser内核设置 /// </summary> public stati ...
随机推荐
- caddy quic 协议试用&& 几个问题
备注: caddy 具体的安装就不介绍,quic 协议也不介绍了 1. 启用协议,比较简单 /usr/local/bin/caddy -log stdout -quic -conf=/et ...
- Spring boot admin 使用
1. maven依赖 <dependencies> <dependency> <groupId>org.springframework.boot</group ...
- c++中重载,重写,覆盖
1.重载 重载从overload翻译过来,是指同一可访问区内被声明的几个具有不同参数列表(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型. 相同的范围(在 ...
- docker 镜像导入导出[转]
0)查看镜像id sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/calico/node v1.0.1 c70511a4 ...
- Time complexity--codility
lesson 3: Time complexity exercise: Problem: You are given an integer n. Count the total of 1+2+...+ ...
- 安装Zookeeper(集群版)
一.环境介绍(3台虚拟机) IP Hostname 192.168.2.14 javaweb04 192.168.2.15 javaweb05 192.168.2.16 javaweb06 二.配置文 ...
- 【备忘录】CentOS服务器mysql忘记root密码恢复
mysql的root忘记,现无法操作数据库 停止mysql服务service mysql stop 然后使用如下的参数启动mysql, --skip-grant-tables会跳过mysql的授权 ...
- jeecg选择按钮带入其他单据值
前端的标签 <input class="inputxt" id="fshimian" name="fshimian" ignore=& ...
- redis 命令集
进入客户端 /usr/local/bin/redis-cli 选择数据库 select index (0-15) 退出 quit
- canvas之画一个三角形
<canvas id="canvas" width="500" height="500" style="background ...