• IE让我首次遭受了社会的毒打


      2022年6月15日,微软终止对IE的支持,自此IE走入历史,可以说这是一个时代的终结。

      

      自己在 2011 年刚从业时,IE 在国内的市场占有率可是遥遥领先的,下图来自于 StatCounter 网站的统计结果。

      

      将浏览器版本再细分,排在前面的也是 IE 的四个版本,其中 IE6 的占有率最高,兼容各个版本的 IE 是当时前端的噩梦。

      

      当时开发 PC 页面,一般需要兼容的最低版本是 IE6,过了几年后,最低版本升到了 IE8。

      兼容 IE6 会让人很痛苦,当年没少遭毒打。

    一、IE的体验问题

      IE 的体验问题主要从开发和使用者的角度来阐述。

    1)操作系统的捆绑

      1995 年发生了第一轮浏览器大战,微软血拼网景,最后微软凭借操作系统与 IE 的捆绑,笑到了最后。

      而这恰恰是它的第一个问题,因为操作系统中只能存在一个版本的 IE,所以要调试其他版本就比较麻烦。

      当时常用的解决手段有多种,最直接的是物理扩展,多备几台电脑,安装不同的版本调试即可。

      另外一种手段是安装 IETester,如下图所示,在图中有多个版本的选项。

      但是在真正研发时,会发现 IETester 与真实浏览器还是有差别的,尤其是脚本方面。

      

      还有一种是软件扩展,就是下载虚拟机,然后安装合适的 windows 操作系统。

    2)调试控制台

      2001 年 IE6 面世,下一代版本直到 2005 年才推出,IE6 也成为该系列产品中生命周期最长的一个版本。

      2002 年,IE 市场份额更是达到了惊人的 96%,即使到了 2011 年,仍然达到了 37.81% 的市场占有率。

      自己在2010年接触到了 Firefox,其中的插件 Firebug 一下子惊艳到了我,原来还能在线上直接修改网页。

      

      非常遗憾的是,当时的 IE6 并没有配套调试控制台,直到 IE8 才有了这个功能。

      在 IE6 中调试页面就会比较曲折,修改源码,手动刷新浏览器,当时也没有工具能自动刷新浏览器。

    3)W3C规范

      IE的很多功能都不会按 W3C 规范来实现,这就会导致在 Chrome、Firefox 等现代浏览器中表现正常,放到 IE 中,就会发生异常。

      主要以 IE6 的问题为例,第一个是脚本问题,Ajax 通信在 IE6 中就要做兼容处理,如下所示。

    if (window.XMLHttpRequest) {
       //Firefox、 Opera、 IE7 和其它浏览器使用本地 JavaScript 对象
       var request = new XMLHttpRequest();
    } else {
       //IE 5 和 IE 6 使用 ActiveX 控件
       var request = new ActiveXObject("Microsoft.XMLHTTP");
    }

      当年 jQuery 那么受追捧,解决的一大痛点就是IE的兼容处理,抹平了浏览器之间的差异。

      第二个是 png 透明图片,在 IE6 中,显示 png 会有一层底色,常用的是在 CSS 中添加 filter 属性。

    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='bac.png'); /* IE6 */

      第三个是 CSS 样式,在 IE6 中没有圆角、阴影等 CSS3 属性,一般只能通过图片来实现。

      这非常阻碍 CSS 的发展,已经遇到过好多次,在其他浏览器中实现了惊艳的界面效果,但无法移植到 IE6 中。

      为了解决浏览器的兼容性问题(尤其是 IE),当时就出现了渐进增强和优雅降级两种思想。

      

    4)安全性

      2004 年读高中时家里通网了,使用 IE6 上网,有时候莫名其妙就下载了垃圾软件。

      还会访问流氓网页,就是不断地弹框,越关越多,当时非常愤怒。

      于是在高三时特地选了计算机专业,就是为了能方便地修电脑,不过在开学时才发现与自己的预期不同。

      针对 IE6 的安全性问题,国内涌现了一批套壳的浏览器,例如 Maxthon、360、QQ等。

      除了安全之外,这些浏览器还提供了标签功能,打开一个网页不用再重开一次软件了,当时我被惊艳到了。

      还有无痕浏览功能,增强了隐私保护。  

    二、巨人的落幕

      IE 曾经无比辉煌,但是在 Firefox、Chrome 等现代浏览器的冲击下。

      桌面端的市场份额在不断的被蚕食,从 96% 跌至 1.65%(截止至2022年5月)。

      2008 年 Chrome 发布,4 年后就与 IE 的占有率差不多并驾齐驱。

      在 2013 年,全球市场中 Chrome 首次超越 IE,2014 年,国内市场中 Chrome 也超越了 IE。

      下图来自于 StatCounter 的统计,蓝线是 IE,绿线是 Chrome,前者不断下降,后者不断上升,两极分化很明显。

      

      IE 持续败退的原因有很多,此处就列举其中的几个。

    1)移动浪潮

      人们日常上网的方式正从 PC 转为移动端,无论是购物还是娱乐,端着手机就能完成。

      下图摘录自 StatCounter,在 2022 年 1 月至 6 月的浏览器中占有率最高的两个排名都来自于移动端。

      

      这个排名也得益于 Android 和 iOS 的成功,而反观微软推出的 Windows Phone 早在 2017 年 7 月就已歇菜。

      移动战略的失败,也让 IE 在移动端举步艰难。

    2)自身缺陷

      第一个是更新缓慢,这就导致功能改进不及时,难以创新,并且会延长安全漏洞的修复时间。

      第二个是 W3C 标准的支持度不够,在开发人员中的口碑极差,总是要单独做适配。

      第三个是未提供强大的扩展系统,无法满足一些特定的自定义功能。

      第四个是在浏览网页时速度慢,加载慢,响应不及时。

      当然,微软从 IE8 开始也在努力改善使用体验,例如注重对 W3C 规范的支持、提升浏览器安全性等。

      但是 IE 的积弊使其在步伐上显得迟缓而无力,官方显然也意识到了这个问题。

      在 2015 年发布新浏览器 Microsoft Edge,替代 IE 成为 Windows 10 的默认浏览器,也算是为 IE 敲响了丧钟。

      上述是我能想到的问题,若有不同观点,欢迎在评论区补充。

      最后,还是要像 IE 致敬,虽然它有种种不是,但不可否认,它的存在,推动了整个时代的进步。

  • 相关阅读:
    linux jdk1.8安装
    spring boot jar包 linux 部署
    mysql linux安装
    codesmith 三层架构
    数据库分库分表(sharding)系列(三) 关于使用框架还是自主开发以及sharding实现层面的考量
    android学习路线
    博客资源
    dotNET跨平台研究的相关文档
    Foundation框架—— 数组 (NSArray NSMutableArray )
    OC面向对象特性: 继承
  • 原文地址:https://www.cnblogs.com/strick/p/16390619.html
Copyright © 2020-2023  润新知