换个眼界看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 ...
随机推荐
- caoz的梦呓:信息安全攻防杂谈
猫宁!!! 参考链接:https://mp.weixin.qq.com/s/O0zLvuWPRPIeqnRooNEFYA 旧文我提过一句话,信息安全防御这事,在业内,三分靠技术,七分靠人脉. 在知识星 ...
- Linux常用目录名称
目录 用途 / 虚拟目录的根文件,通常不会在这里存储文件 /bin 二进制目录,存放许多用户的GNU工具 /boot 启动目录,存放启动文件 /dev 设备目录,Linux在这里创建设备节点 /etc ...
- nginx reload的原理
nginx启动时,会启动两个进程: 一个是Master进程和worker进程.改变配置后nginx做的事1)改变了nginx配置之后,HUP signal的信号需要发送给主进程.2)主进程首先会检测新 ...
- 通俗易懂的lambda表达式,不懂来找我!
lambda是Python编程语言中使用频率较高的一个关键字.那么,什么是lambda?它有哪些用法?网上的文章汗牛充栋,可是把这个讲透的文章却不多.这里,我们通过阅读各方资料,总结了关于Python ...
- 【miscellaneous】最新HEVC/H.265 4K视频,显卡解码测试
转载自:http://bbs.zol.com.cn/diybbs/d34441_76103.html 4K这个概念也在最近几年开始流行了起来,无论是4K显示器.4K电视盒子,还是4K游戏对硬件的要求也 ...
- Spring MVC (二)注解式开发使用详解
MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处理器, 无需在xml中注册. 只需在代码中通过对类与方法的注解, 即可完成注册. 定义处理器 @Controller: 当前类为处理器 @ ...
- SpringSecurity 配置
SpringSecurity+JWT https://www.jianshu.com/p/5b9f1f4de88d https://blog.csdn.net/qq_35494808/article/ ...
- python 求从1加到100的和,join的用法
li=[] def func3(x): li.append(str(x)) if x==1: return 1 return x+func3(x-1) # print(func3(100)) re=f ...
- CodeForce20C
这是一个裸的最短路的模板题,但是它需要输出路径. 用dijkstra的话首先敲一个最短路的板子,其次开一个数组p[]来记录路径,但是怎么存呢?我们需要记录每一个点的前驱,因为如果记录后边的话,一个点可 ...
- thinkphp框架部署出现404解决
1:虚拟机配置文件修改: location / { index index.php index.html; if (!-e $request_filename) { rewrite ^/index.p ...