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 致敬,虽然它有种种不是,但不可否认,它的存在,推动了整个时代的进步。
IE让我首次遭受了社会的毒打的更多相关文章
- try-catch-finally中的4个大坑,不小心就栽进去了!
在 Java 语言中 try-catch-finally 看似简单,一副人畜无害的样子,但想要真正的"掌控"它,却并不是一件容易的事.别的不说,咱就拿 fianlly 来说吧,别看 ...
- 利用python进行数据分析—数据清洗记录3,map,apply,
社会心态调查报告 导语: 时代决定心态,心态映照时代.社会心态产生于社会个体心理,又以整体的形态存在,进而影响着每个社会成员的社会价值取向和行为方式,影响着国家经济政治和社会发展大局.良好的社会心 ...
- 像追女神一样学好java~
写在前面的话 ● 本文适合食用的观众大老爷和小建议: ----本文内容主要是围绕java这门语言展开~ 适合的食用的大老爷们: ★ 第一类:完全没学过其他编程语言入门java的小白 ★ 第二类:已经学 ...
- 面向对象设计与构造:oo课程总结
面向对象设计与构造:OO课程总结 第一部分:UML单元架构设计 第一次作业 UML图 MyUmlInteraction类实现接口方法,ClassUnit和InterfaceUnit管理UML图中的类和 ...
- 退役记——CCC2020&CCO2020
我叫吴佳诚,一个曾在福建师大附中就读的oier,2019年7月份我来到多伦多就读于Langstaff Secondary School 我的常用id有:Johnson_Wu,温词 竞赛经历: 2018 ...
- 18岁,赚到了人生中的第一个10W!
大家好,我是九歌 今年我18岁,赚到了我人生中的第一个10W 截至2019年10月14日,我已经做了43天的公众号啦,粉丝也悄然增长到了1W8,感谢各位读者朋友给我的支持和鼓励. 相信大部分读者都是从 ...
- async,await执行流看不懂?看完这篇以后再也不会了
昨天有朋友在公众号发消息说看不懂await,async执行流,其实看不懂太正常了,因为你没经过社会的毒打,没吃过牢饭就不知道自由有多重要,没生过病就不知道健康有多重要,没用过ContinueWith就 ...
- 利用c++中的设计灵感,既要学BIM分类信息表,借助GIS完成环境搭建改善
我,一个平平无奇的城市规划专业(建筑专业.路桥专业)大学生,还有一年要毕业,很担心工作以后受到社会的毒打,遂问导师和学长,我要自学点什么技能和软件? 学长A:CAD,SketchUp,PS我都很熟练了 ...
- 大厂程序员因厌恶编程,辞去月薪2w+的工作去当司机?
世界好小啊,刚在一个 UP 主的群里看到一个视频,标题叫做:"失业了工作没找到,却稀里糊涂上了知乎热搜,2000 多万人围观,我--" 说实话,看到视频的封面,我的下巴当时就掉到了 ...
随机推荐
- Ubuntu20.04搭建web服务器
其他Ubuntu20以及Ubuntu18系列也可以!
- 使用加强堆结构解决topK问题
作者:Grey 原文地址: 使用加强堆结构解决topK问题 题目描述 LintCode 550 · Top K Frequent Words II 思路 由于要统计每个字符串的次数,以及字典序,所以, ...
- 一行代码,让 VS Code 内置 PDF 阅读器变成深色模式
使用 CSS/JS 简单实现 PDF 深色模式.
- Java进阶 JVM 内存与垃圾回收篇(一)
JVM 1. 引言 1.1 什么是JVM? 定义 Java Vritual Machine - java 程序的运行环境(Java二进制字节码的运行环境) 好处 一次编译 ,到处运行 自动内存管理,垃 ...
- Bootstrap Blazor 组件库 Row 布局组件(栅格系统)
原文链接:https://www.cnblogs.com/ysmc/p/16133351.html 在 Bootstrap 中,栅格相信大家都很熟悉,简直就是布局神器啊,Bootstrap Blazo ...
- gin框架使用【3.路由参数】
GET url: http://127.0.0.1:8080/users/{id} http://127.0.0.1:8080/users/1 对于id值的获取 package main impo ...
- AcWing周赛43
AcWing周赛43 题源:https://www.acwing.com/activity/content/1233/ 4314. 三元组 直接暴力做就是了,我一开始还在找规律..悲 我滴代码 #in ...
- 从零搭建Pytorch模型教程(三)搭建Transformer网络
前言 本文介绍了Transformer的基本流程,分块的两种实现方式,Position Emebdding的几种实现方式,Encoder的实现方式,最后分类的两种方式,以及最重要的数据格式的介绍. ...
- python基础练习题(斐波那契数列)
day4 --------------------------------------------------------------- 实例006:斐波那契数列 题目 斐波那契数列. 题目没说清楚, ...
- vite初使用随记
vite的安装 按照官网文档来看,并不难. 先检查自己电脑node的版本与npm的版本/yarn的版本 可以直接用yarn安装,yarn create vite 这是最原始的安装,即类似于安装vue- ...