换个眼界看IE,它真的有那么可恶吗?
一说到IE我想很多web小伙伴都避之不及,对于IE经验不足的同学可以说更是恨之入骨,撕心裂肺般的烦恼与气愤?,被折磨的不要不要的。我感同身受,去年的我的生日愿望就是,
我希望IE浏览器在这世界上没有一个用户。
这篇文章是一个追溯历史并收集IE在web上的贡献地位的非干货性文章,如果有幸被转发分享到其他平台(非SF),请到segmentfault来查看,或者关注我的github。同时,我也希望大家提出文章中的不足,加以补充,万分感谢?。
事件冒泡
在 web3 时代(netspace3 & ie3),就已经有了事件这个东东,当时是为了减少服务端的压力,后来开发者发现了一个很有意思的问题,就是一个在一个同心圆中,如果触发事件,那应该怎么办呢?
IE依然秉承着优良传统,不管其他人怎么搞,我先来解决一下,之后也就出现了事件冒泡的这个概念。
随之,netspace网景公司也提出了自己的解决方式,正好与IE大相反(有可能这哥俩谁都不服,专门对着干),它提出了事件捕获的理论,也就是从外向内直至触发元素,依次触发事件。
虽然现在w3c标准把两者都纳入了规范,但我们大多数还是更偏向于冒泡,所以这个IE的点子不错,算你厉害。
Ajax
上世纪90年代所有的网页都是单独的文本页,每次交互都需要去向服务器请求新的页面来展示信息,随着web的不断发展访问量不断增加,服务器承受的越俩越多,当时就用java来嵌入了一个小程序(Java Applet),它可以动态更新页面内容,个人认为,java小程序过于笨重而且为了保持平台的语言统一,后来IE的Outlook Web Access团队把了iframe嵌入到HTML实现了局部刷新,不久就他们就发布了客户端HTTP请求在当时,这是第一个可以不用通过刷新页面去主动发送HTTP请求的技术,并迅速应用到了IE4之中。时至今日,从ActiveXObject,XHR,Fetch,技术一直在向前走,但始终离不开AJAX的概念,所以IE起了个好头(就是没找)。
标准模式与混杂模式
IE5.5最先使用了标准模式与混杂模式,可能是因为自身(你懂的)原因,面对规范与自己的低版本浏览器(与规范差异较大,如果完全支持规范,用户如果更新浏览器完全崩溃了)不能互融,所以这部分交给了开发者来处理,让我们来选择以什么样的浏览器模式处理。
IE做出这个决定也是别无它法,如果脱离了规范就真的成为独脚兽了,如果支持,还得照顾低版本浏览器,所以这个方法无疑是最好的。也因为这样,当时的其他浏览器,IE 打了个头,其他浏览器纷纷效仿,这也算IE打了个头提出了不同规范下的兼容模式。
首个使用Css
IE6是第一个完全支持css-Level1的,它支持
- (class,id)selectors,
- descendant selectors,
- a:-only pseudo-selectors
详情请看这篇文章。
webApp
微软早在IE3的时候已经开始把网页集成在desktop上了,正是因为这件事情,引起了美国政府的极度不满,从而引发了美国诉微软案,虽然确实有点垄断,图谋不轨的那种感觉,但从用户的使用角度来说这确实是一个很好的想法,过去这么多年了,我们不还是在追求着SPA,PWA,想要更接近原生应用一些,可是这些Feature IE早就已经实践过了,再看看从以前的服务器端渲染,经历了各式各样的新型玩法之后,发现了新大陆"SSR",不由暗自感叹,技术就是一个圈,如果没有本质上的突破,就一直绕着这圈跑,造轮子,造轮子,造轮子。
真心话
其实,IE最大的好处就是可以下载 Firefox 与 Chrome 浏览器,哈哈,不管对错,它为web的发展贡献了这么多,即便以前对兼容问题比较偏执,但现代版的IE一直在跟随W3C的脚步,希望有一天可以像 Gecok 与 Blink 一样高效积极支持规范。如果大家知道什么IE的特殊之处敬请说来。
换个眼界看IE,它真的有那么可恶吗?的更多相关文章
- 换种眼光看Spring之bean是怎么诞生的(一)
Java的世界里处处存在了对象,有时候换一种眼光往往会给自己带来与之前大不一样的理解. 一个对象的出现离不开字节码,拿classforname来讲,classforname("...&quo ...
- 8个问题看你是否真的懂 JS
文章转载: https://juejin.im/post/5d2d146bf265da1b9163c5c9#heading-20 原文地址: https://dev.to/aman_singh/so- ...
- Intellij IDEA 的使用(创建项目、导入项目、同时部署多个项目、JRebel)等常见eclipse、myeclipse换idea必看
第一篇:Intellij IDEA 的使用 1.黑色主题 中文乱码修改 2.WEB项目的部署 以及自动编译 3.多项目的同时部署 4.相关插件提高工作效率 1.JRebel插件 实现热部署 2.Tas ...
- 【HIVE & Spark】将hive引擎换成Spark,运行速度快!怎么换?请看本文
本教程仅仅是使用spark,能在hive用就行. 1.下载Spark; 2.WinSCP上传spark压缩包到虚拟机: 3.tar -zxvf spark-2.3.3-bin-without-hado ...
- 提问的智慧——其实你真的不会提问!(转)
在黑客世界里,当提出一个技术问题时,你能得到怎样的回答?这取决于挖出答案的难度,同样取决于你提问的方法.本指南旨在帮助你提高发问技巧,以获取你最想要的答案. 首先你必须明白,黑客们只偏爱艰 ...
- [浪风分享] PHP开发必看 我现在是这样编程的
我在做什么 曾经,我试过接到一些需求.一眼带过后,脑袋马上随着高昂的斗志沉溺在代码的世界中 ,马不停蹄地敲着键盘直到最后测试的完成.我从思绪中恢复过来,乍一看自己写的功能,和需求差了十万八千里,我TM ...
- 程序员如何在VsCode上看基金?
一 我是一个程序员. 代码是我的禁锢,基金是我的自由. 打破禁锢,奔向自由,也许只差几个定投. 有人说,买基金一定要心态好,要学会风险对冲,把8成的钱全仓买基金,剩余2成买意外身亡险,基金大涨就赚,基 ...
- 你真的会玩SQL吗?透视转换的艺术
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- 你真的会玩SQL吗?透视转换
原文:你真的会玩SQL吗?透视转换 透视转换是一种行列互转的技术,在转过程中可能执行聚合操作,应用非常广泛. 本章与 你真的会玩SQL吗?数据聚合 内容比较重要,还涉及到 你真的会玩SQL吗?Case ...
随机推荐
- Android逆向——破解水果大战
最近公司需要测试安卓app安全,但安卓基本上0基础,决定开始学习下安卓逆向根据吾爱破解上教程 <教我兄弟学Android逆向系列课程+附件导航帖> https://www.52pojie. ...
- Python3 Selenium自动化web测试 ==> 第三节 常用WebDriver API使用示例上(24个API)
前置步骤: 安装selenium,chrome驱动,Python3.6 学习目的: 常见API的使用 涉及的API: step1: 访问一个网址 step2: 网页的前进和后退 step3: 刷新当前 ...
- 【AMAD】django-rules -- 强大的Django鉴权库,不需要数据库
动机 简介 个人评分 动机 Django默认的权限原子级别是model级.但是一些时候我们像针对model每条数据库记录都进行权限空,也就是对象级权限控制. 简介 django-rules是一个Dja ...
- CodeForces 1249A --- Yet Another Dividing into Teams
[CodeForces 1249A --- Yet Another Dividing into Teams] Description You are a coach of a group consis ...
- 为什么样本标准差要除以n-1?
根据中心极限定理,我们可以用样本估计总体的平均值.那么,如果通过n个样本估计总体的标准差则需要除以n-1,这是为什么呢? 标准差是描述数据与平均值的偏离程度. 而因为样本的数据量比总体的数据量少,因此 ...
- python+selenium显示等待、隐式等待和强制等待的区别
在实际使用selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,在selenium中(a ...
- selenium—显示等待中期望的场景语句
① alert_is_present() 判断页面是否出现alert框 wait = WebDriverWait(driver,10) alert = wait.until(EC.alert_is_p ...
- 【转贴】龙芯内核发展策略 已经支持k8s
龙芯内核发展策略 时间:2019-06-27 15:48 来源:未知 作者:龙芯中科 点击:1002次 http://www.loongson.cn/m/view.php?aid=1118 ...
- LoadRunner之使用JSEESIONID访问网站
LoadRunner使用笔记 JSESSIONID的含义:https://www.cnblogs.com/caiwenjing/p/8081391.html 1.使用JSESSIONID访问网站 Ac ...
- C++ 数组操作符重载、函数对象分析、赋值操作符
string类型访问单个字符 #include <iostream> #include <string> #include <sstream> using name ...