非互联网类桌面B端项目的浏览器兼容

笔者目前开发的传统软件的Web管理平台,只预计兼容以下浏览器版本:

PS:以下的版本号只是当前这个时间点需要兼容的,后面可能会不断地提升浏览器版本上的要求,以对应不断提高的浏览器原生功能需求。

微软:IE/Edge 12+ 版本

谷歌: Chrome 50.0+ 版本

Mozzila基金会:FireFox 40.0+ 版本

欧朋:Opera 40.0+ 版本

苹果:Safari 10.0+ 版本

国产浏览器厂商: Chromium 50.0+ 版本

附加几点说明:

1. 主流国产浏览器基本都是较新版的Chromium包个壳(贴牌),有些甚至只是改了一下浏览器应用的Logo。主要有这些产品:红莲花安全浏览器、速龙安全浏览器、龙芯中科、奇安信、科答浏览器等。申威、飞腾、龙芯、兆芯、鲲鹏等平台,UOS、银河麒麟、中标麒麟、中科方德、普华、深度等国产操作系统的生态圈里基本都有上述各国产浏览器的版本。这些内容以文章发布的这个时间点为准,不代表以后的实际情况,也就是说这里描述的内容在以后有可能会过时,或者出现部分信息不准确的情况。

2. 至于IE11,如果真有这个兼容需要,web应用必须只能运行在IE11上,后面可以调整一下JavaScript代码的编译模式来向下兼容(大概也就是babel stage那块的东西)和css上的处理(css3的新东西视情况使用)。

3. 上述提到的各浏览器的版本号基本都是集中在2015年前后的旧版本(这个时间段内的发布的版本对HTML5标准已经有一个较为系统的支持,但还不是很完善),只要用户的操作系统能装上它们,其版本号都是远大于上述版本号的,实际的兼容性和性能会更好。

 

IE浏览器及其现状说明:

在传统软件行业,可能大家对互联网的发展不是太了解,对于浏览器这块,大家可能还是很多年以前的想法:那就是一定要兼容IE系列浏览器的,伴随着互联网领域的技术和产品的高速发展和迭代,这个想法已经不是那么有意义了。

IE背景:IE系列在12版本以后(含12),改名叫Edge,Edge最新版本已采用Google Chromium(中立的非商业览器,以Blink作为渲染引擎,Blink中以V8作为JavaScript解释引擎,可以认为Chrome就是Chromium + Google的产品),版本命名和Chrome同步,老IE和Edge的内核已被微软抛弃(开发暂时还在继续,但已不会用其来制作浏览器了),整个IE系列在2020年已停止支持,旧Edge系列(非Chromium引擎的)在2021年会停止支持,在未来两三年内,甚至可能直接关闭,就是不让用户在新的windows系的里面安装了。Blink引擎是Webkit引擎项目的一个精简分支。

PS:IE如果在现在还能看到在项目上使用的话,基本也就是集中在医疗、金融、10年前的老的MIS(依赖ActiveX,Flash等)等传统的中、后台系统上了,也就是那种很传统的组织和公司等还在用,而且改版起来及其困难,牵涉面及广的应用。比如医院的老的HIS系统,要改为现代浏览器支持的话,连电脑都得一起换掉,因为电脑硬件配置极低,N年以前的古董机器,操作系统还是XP老版本,甚至win2000、win me的都有,根本没法安装现代浏览器,要单独换现代的web应用几乎不可能,只能等到整个医院的IT体系重新建设的时候,连办公电脑一起换掉以后,才能开始处理上层应用的问题。

微软转投Chromium后,目前几大主流厂商的浏览器中就只有两种渲染引擎存在了:

1. Gecko:Molliza Firefox。

2. Webkit(算上Blink):Chrome、Safari、Opera、Edge78+。

国内一些所谓自主浏览器厂商大多基于Google Chromium来制作自己的浏览器。

IE性能缺陷:IE10、11为IE系列的最后两个版本,分别发布于2012年、2013年左右,也就是距今7、8年前的样子。对于HTML5、CSS3、ES6的支持不完善,UI项目可以尽可能地做语法降级适配来做兼容,但是意义不大,因为这些浏览器本身低劣放的性能是最大的问题,即便适配了,运行B端的富应用项目时,帧数是很低的,可用性不高。用户只要不是装的Windows XP系统,必须依靠IE的可能性不大,现在国内客户已经不是像多年前那时候,什么都跑在IE上,或者说要求只能用IE浏览器,必须做IE定制化开发了,即便是gov、国企的展示型的网站也是如此,已用现代web设计的不在少数,通常能看到某某新区的网站,一般是现代的web设计,因为新区的广泛设立是在14年以后,已经过了IE流行的时间了。在国产平台、操作系统开始高速发展以来,它们对应的生态开始做起来以后,更没有兼容IE的这个可能了。

从我司的友商产品GUI来看,特别是GUI做得比较好的那些,基本不兼容IE,视觉效果和展示内容的复杂度是IE承受不起的,即便能跑起来,但如果界面的动画和内容很复杂,其帧数也是很低的,对用户来说几乎不具备可用性,要兼容起来的话代价也是很高的,为了那极地的可能性,会舍弃和改变很多东西。 总的来说,现代的、富应用的GUI对浏览器(甚至计算机硬件)都是有性能上的要求的,特别老的浏览器在性能上的缺陷是一个没法逾越的坎,GUI既好看性能又强又能兼容特别老的浏览器它们之间是相互违背的,就类似我们不会给用户配个七八年、十来年以前的机器和盘的来组集群,做到价格又低性能又好。

对IE时代Web前端开发来说,jQuery是搞浏览器兼容的绝对的统治者,那时候的浏览器兼容解决的是API不一致的问题(因为各浏览器不是按相同的web标准实现的),现在标准统一以后,对于编码来讲,兼容性的区别几乎只在于对新标准或草案的提供API是否支持而已(更新慢的浏览器可能不会在标准改了以后就立马改版,对于还在草案阶段的功能在实验模式下也不会立刻就得到支持)。现代的B端富应用开发,已经不是jQuery撑大梁了,用jQuery为主框架对比用其他MV**作为主框架,其开发架构都是完全不同的,从工程化体系到业务代码编写都是两条不同的线,确定要兼容到什么浏览器和版本是首要的事情。

 

对测试的建议:

浏览器兼容性测试是测试浏览器对HTML5、CSS3、ES2015等新标准的支持。GUI代码的兼容性和浏览器对这些标准的支持有关,和浏览器其他方面无关!

只需要测试上述提到的各个浏览器的最低版本即可,举个例子,测试Chrome,只需要测试Chrome 50即可,50如果支持这些标准,能确保从50起至最新的86版本都支持,50以后的版本不需要再测(只有及其特殊的功能可能会进了标准又被移出去的,这个情况有,但是及其少。这类功能在开发的过程中也是很少会用到,或者直接就避免使用了的)!HTML5等新标准一旦在浏览器的某个低版本按标准实现,随着对后续版本的更新,已定稿并支持的标准不会被删除,只会提供更强的性能优化,这点是绝对保证的。

鉴于HTML5、CSS3标准在14年中下旬定稿,ES2015在15年中旬定稿,上述各浏览器版本都是16年中旬左右的版本,已针对这三种新标准做了完美实现。

posted @ 2020-11-27 09:58  james·von  阅读(360)  评论(0编辑  收藏  举报