WebView简介

在win10之前,浏览器控件有WPF版本webBrowser、Winform版本WebBrowser,浏览器内核为IE。

win10之后,微软不再维护原有的WebBrowser,转而推出UWP版本的WebView,可以适配于WPF、Winform程序。

WebView使用

限制条件:

  1. win10 - WebView的内核是Edge,所以只能在win10电脑上使用。在win7环境下,无法显示。
  2. .NET 版本 4.6.2及以上  - 在引用WebView控件时,要求当前项目的.net框架至少是4.6.2

在WPF中引用WebView:

在NuGet下搜索Microsoft.Toolkit.Forms.UI.Controls.WebView ,点击安装后,直接使用WebView控件就行了。

WebView当前已知缺陷:官网列出的缺陷列表Known Issues of the WebView

还有值得关注的是WebView在高DPI下显示比例不正常,官网文档上有解决方案

同时,WebView如果在后台初始化无法显示网页(如果放Xaml中,正常),调整窗口大小后则正常显示,目测可能因为宽高未自适应(待查找原因)。

WebView兼容

针对WebView以上提到的限制条件,只能在Win10中显示。那么是win7/win8环境下浏览器呢?

值得点赞的是,官网提供了一个兼容控件WebViewCompatible,不用我们去做兼容。

  • 在win10下,基于Edge呈现
  • 在win10以下版本,则使用IE

所以。。。。在win7/win8环境下原有WPF的坑依旧存在,比如透明窗口样式下无法显示问题

当然,如果你的程序主要是在Win10上运行,然后只是兼容win7/win8,WebViewCompatible绝对适合你。

各版本浏览器的Demo效果

点击下载Demo,查看在不同windows版本下的效果。

浏览器版本&Windows版本结果对比如下:

winform版本&WPF版本 - WebBrowser

  • win10 & win7

    • 默认样式 - 显示正常
    • 透明窗口样式 - 显示空白(不可见,但可点击隐藏内容)

原因:winform版本&WPF版本,已经指定内核为IE浏览器,而IE浏览器内核在透明窗口样式下无法正常显示。

UWP版本-WebView

  • win10下

    • 默认样式 & 透明样式 - 显示正常
  • win7下 程序崩溃

原因:UWP版本,除了要求.net4.6.2,还要求win10环境。而win10下,WebView的内核为Edge,所以显示正常

UWP兼容版本-WebViewCompatible

  • win10下

    • 默认样式 &  透明样式- 显示正常
  • win7下
    • 默认样式 - 显示正常
    • 透明窗口样式 - 显示空白

原因:UWP兼容版本,要求.net4.6.2。win10下,WebViewCompatible的内核为Edge,所以显示正常;win7下,WebViewCompatible内核为IE浏览器,所以与WPF版本一样,如果窗口为透明窗口样式则显示空白。

客户端浏览器- UWP兼容版本WebView的更多相关文章

  1. js获取浏览器信息及版本(兼容IE)

    获取浏览器信息方法有很多种,但是要是兼容ie旧版本就有点麻烦了,因为很多方法在旧版本ie是不支持的,所以ie我做了单独处理,但是目前还有小问题,就是想显示QQ浏览器,搜狗浏览器..这样的,这样还实现不 ...

  2. 我们检测到您的浏览器不兼容传输层安全协议 (TLS) 1.1 或更高版本,此协议在 Internet 上用于确保您通信的安全性。

    早上使用.Net WebClient类采集亚马逊数据,返回http 400 Bad Request错误,内容里面有“我们检测到您的浏览器不兼容传输层安全协议 (TLS) 1.1 或更高版本,此协议在 ...

  3. Android 各个版本WebView

    转载请注明出处   http://blog.csdn.net/typename/ powered by miechal zhao : miechalzhao@gmail.com 前言: 根据Googl ...

  4. WPF 客户端浏览器 添加Loading加载进度

    在windows开发界面时,使用浏览器来请求和显示网页内容,是比较常见的. 但是在请求网页内容时,因网速或者前端功能复杂加载较慢,亦或者加载时遇到各种问题,如空白/黑屏/加载不完整/证书问题等. 因此 ...

  5. js获取浏览器类型和版本信息

    bro () { let broName = 'Runing' let strStart = 0 let strStop = 0 let temp = '' let userAgent = windo ...

  6. 前端开发【第6篇:JavaScript客户端(浏览器)】

    Web浏览器中的JavaScript 客户端JavaScript时间线 1.Web浏览器创建Document对象,并且开始解析web页面,解析HTML元素和它门的文本内容后添加Element对象和Te ...

  7. ios客户端浏览器样式加载失效问题

    最近线上测试中出现一个奇怪的问题,ios客户端浏览器样式加载失效. 从表象来看,同样的css,安卓手机上可以正常展示,但是到ios手机上首次进入页面就不能正常显示 这时候,我们首先会考虑是不是ios设 ...

  8. asp.net获取客户端浏览器及主机信息

    在线预览效果:http://tool.hovertree.com/info/client/ 其中aspx页面的控件代码: <asp:ListBox runat="server" ...

  9. 强制浏览器使用兼容模式,Web.config,httpProtocol

    对于一些政府类的网站,很多支持IE6~8,而不支持使用更高版本浏览器浏览.虽然有些浏览器会自动使用兼容模式,或有些人会手动调整浏览器的兼容模式,但不是每一个人.每一款浏览器都可以做到用兼容模式.所以, ...

随机推荐

  1. 命令提示符编译java

    先新建一个文件夹kun,kun就是类所在的package.新建一个java文件. HelloWorld.java的代码如下: package kun; public class HelloWorld{ ...

  2. Java注解(一):介绍,作用,思想及优点

    “注解优先于命令模式”-出自<Effective Java> Java 注解,从名字上看是注释,解释.但功能却不仅仅是注释那么简单.注解(Annotation) 为我们在代码中添加信息提供 ...

  3. SSRS报表服务随笔(rdl报表服务)-创建一个简单的报表

    这段时间一直在敲rdl报表,在国内的不这么留在,在国外的话,还是挺流行的,国内的话,这方面的资料很少很少,也踏过不少坑 先从SSRS了解起,SSRS全称 SQL Server Reporting Se ...

  4. C#机器学习之判断日报是否合格

    简单来说机器学习的核心步骤在于“获取学习数据:选择机器算法:定型模型:评估模型,预测模型结果”,下面本人就以判断日报内容是否合格为例为大家简单的阐述一下C#的机器学习. 第一步:问题分析 根据需求可以 ...

  5. 设计模式 | 简单工厂模式(static factory method)

    按理说应该把书全都看完一遍,再开始写博客比较科学,会有比较全面的认识. 但是既然都决定要按规律更新博客了,只能看完一个设计模式写一篇了. 也算是逼自己思考了,不是看完就过,至少得把代码自己都敲一遍. ...

  6. Android 切换横竖屏

    一个项目一般会自己先定义项目是横屏还是竖屏但是也有可以横屏和竖屏之间切换的activty. 切换横竖屏的方法: //判断当前屏幕方向if(getRequestedOrientation() == Ac ...

  7. 基于后端云的Android注册登录开发

    APP开发离不开注册登录功能,但是注册登录功能开发需要后台数据库的支持,对于一些初学者或者对后台数据 不熟悉的同学来说可能会有些困难.本文介绍一下后端云: 1. Bmob是国内起步较早的云后端服务平台 ...

  8. 4.29 初始mysql

  9. webpack打包nodejs项目(前端代码)

    PS.若本文没有帮到你可以看看我的进阶版点此前往 适用情况 首先说明,此情况不具备普遍性.若你的情况与笔者类似那么希望这篇文章能够帮到你. 我的项目情况是这样的:用node.js做后台,ejs做模板引 ...

  10. IDEA设置热部署

    1.点击File找到Settings打开. 1.2:找到Compiler将 Build project automatically   勾选 2.使用快捷键 Ctrl+Shift+A    搜索 re ...