浏览器兼容
为了使我们的 Web 应用可以在不同的浏览器上正常运行,显示效果尽量保持一致,我们需要做好浏览器兼容。
#
解决方案在实际项目中,出于成本的考虑,一般没必要兼容全部浏览器。我们通常对主流浏览器进行兼容处理;不兼容的浏览器,给予用户提示和引导。
下列浏览器占据国内浏览器主要市场份额,满足大多数 Web 应用使用场景,所以我们针对这些主流浏览器做好兼容。
浏览器 | 版本 |
---|---|
Chrome | 最新版 |
360 安全浏览器 | 最新版(不支持兼容模式) |
Firefox | 最新版 |
QQ 浏览器 | 最新版(不支持兼容模式) |
Microsoft Edge | 最近的两个主版本 |
搜狗 浏览器 | 最新版(不支持兼容模式) |
IE11及以下、微信浏览器 | 不支持 |
#
2020 国内浏览器市场份额#
Angular 项目中的实现Angular 项目中,包含两部分内容:兼容处理,不兼容时的用户提示。
#
兼容处理采用 Angular 官方解决方案 腻子脚本 (polyfill)
Polyfill 是一块代码(通常是 Web 上的 JavaScript),用来为旧浏览器提供它没有原生支持的较新的功能。
在polyfill.ts
中引用需要的腻子脚本,常用的腻子脚本配置如下:
上述代码包括:
- 数组、对象语法支持。例如在旧浏览器中支持
Object.assign()
、Object.values()
、Array.includes()
等语法。在使用 Angular CLI 8.0 以上创建工程时,
core-js
已经作为默认依赖包,不需要手动添加。 - CSS 动画支持
web-animations-js
,需要手动安装依赖包:
#
不兼容处理增加画面,提示用户:
- 下载 Chrome 浏览器
- 切换浏览器的极速模式
应用启动入口处,判断浏览器是否可以启动
#
以 IE11 为例- index.html
- main.ts
效果如下: