IE7提供XMLHttpRequest对象为兼容


Posted in Javascript onMarch 08, 2007

在IE7的开发中,据说新增加了一个Native对象——XMLHttpRequest。怎么难道开发IE7的"新警察"不知道IE6们都用ActiveX对象XmlHttp吗?XmlHttp出了什么问题,IE7为什么要这么做?原来一切就为了一个简单的兼容而已,但让人感慨颇多。

    IE7提供XMLHttpRequest对象后,当然会继续支持ActiveX对象XmlHttp,这是微软这么几十年来产品升级起码的"素养",丝毫不用我们去担心现在IE上的Ajax应用代码。在Sunava Dutta的blog里,虽然他说了为什么要这么做的初衷,其实就是为了兼容目前的非IE浏览器提供XMLHttpRequest来使用XmlHttp的情况而已。他的一段"蹩脚"的示例代码虽然被一些睛睛火眼的同志挑出了不足,不过我却觉得微软在这些"细枝末节"的问题上,显示出他的真正利害。

    这话又要回到IE和Netscape争霸的岁月,当时如日中天的Netscape是浏览器市场的绝对No.1,微软由于Bill同志起初在互联网战略上打了一个小盹,让那Netscape尝到了一下山中无老虎,猴子称霸王感觉。当Bill发出:我发现互联网上没有微软的文件格式是很危险的,的自省论断后,微软开始了对互联网的进军。当然一个棘手的问题就是绞杀Netscape,当时的Netscape vs. IE就像今天的IE vs. Firefox。前者IE有Windows作为其捆绑的绿色快车,后者有今天大家高举安全、高举W3C大旗的声援呼声,可以说都是对手强大但是来者也都不是善主。

    在这个绞杀战中,微软是比较稳的住气的。因为IE 1.0, 2.0以至3.0(好像NT4.0就带的IE3.0)都完全不是Netscape的对手,就像当初VC++和BCC之间的较量一样,微软是郁闷的。但是微软知道自己当时不敌Netscape,所以在IE的实现做了很多兼容Netscape的设计,因为当时的Netscape也不是软蛋,一手造就了JavaScript,它其实也就是业界的默认标准。这样的情况持续到IE4.0,IE逐渐占据了优势(当然免费+绿色快车的捆绑不是吃素的)而Netscape的衰败已不可避免,这时微软才开始了大刀阔斧的设计自己的DOM,修改HTML解析以及呈现效果,添加新的HTML标签(这之前都是Netscape的活儿),当然对CSS的支持等也就随微软心所欲了。

    今天的IE7支持XMLHttpRequest对象和Firefox死抱所谓的W3C标准形成了一个宣明的对比。前些天,有人在经典的脚本论坛上号召Web开发者抵制Firefox,虽然话语偏激且给人感觉是螳臂挡车,不过他的一些观点我还是赞同的。就是希望Firefox等非主流(其实就是非IE)浏览器,能更多的兼容IE,而不是让Web开发者去想尽办法兼容各种具有细微差别的浏览器。因为从代价上看,由于IE已是不争的胜利者,修改新浏览器的实现是一处修改处处受益的,而让Web开发者去兼容各种浏览器,简直是对广大劳动人民智力、劳力的侮辱。

    当然很多人可能会说标准才是老大,不管什么浏览器都该遵循标准,否则都是bull shit。但现实的情况就是"店大压人、人大压店",其它都是没有意义的。就像今天我们的网络应用技术大多并没有标准而只有RFC,大家不也其乐融融过得很好吗?不扯远了免得成了对标准的讨伐,继续说浏览器的问题。对Firefox这个"后来"这么久的小弟弟浏览器,不管它要想怎么完美支持标准,我都举双手赞成。可是在一些举手之劳的代价上,为什么就不好好的兼容以下目前最普及的IE呢?比如非要用不同的DOM属性名,非要和IE划清界限,你IE独家的什么runtimeStyle、currentStyle等对不起我就是不支持,event也是要搞来和你不一样,反正怎么别扭怎么来。最后效果就是搞的大部分IE里正常的页面,第一次在Firefox里运行都保管歇菜,难道这下大家就都满足了?!

    如果Firefox以及其它非IE内核浏览器,能像微软这样care兼容性问题,那么他们的市场应该更大更有希望。Firefox完全可以提供两种模式来运行,一是标准模式完全遵循W3C,一是IE兼容模式尽可能的兼容IE。这时候用户可以无缝过渡、自由选择,这下它的什么快速、安全的特点才能真正成为压倒性的优势。而在其不同的普及时期选择不同的运行模式来作为默认模式,就可以很好地解决标准推广,和"拉拢"其它IE用户之间的矛盾,而乐而不为呢?

Javascript 相关文章推荐
JavaScript的eval JSON object问题
Nov 15 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
Nov 08 Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
Apr 26 Javascript
浅谈javascript构造函数与实例化对象
Jun 22 Javascript
利用Bootstrap实现表格复选框checkbox全选
Dec 21 Javascript
vue2 router 动态传参,多个参数的实例
Nov 10 Javascript
图片懒加载imgLazyLoading.js使用详解
Sep 15 Javascript
小程序自定义组件实现城市选择功能
Jul 18 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
May 24 Javascript
javascript 原型与原型链的理解及应用实例分析
Feb 10 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
Apr 29 Javascript
js实现淘宝浏览商品放大镜功能
Oct 28 Javascript
使用onbeforeunload属性后的副作用
Mar 08 #Javascript
HTML中不支持静态Expando的元素的问题
Mar 08 #Javascript
使用TextRange获取输入框中光标的位置的代码
Mar 08 #Javascript
获取JavaScript用户自定义类的类名称的代码
Mar 08 #Javascript
JScript内置对象Array中元素的删除方法
Mar 08 #Javascript
在JavaScript中遭遇级联表达式陷阱
Mar 08 #Javascript
原型方法的不同写法居然会影响调试的解决方法
Mar 08 #Javascript
You might like
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
PHP初学者头疼问题总结
2006/07/08 PHP
PHP读取文件内容后清空文件示例代码
2014/03/18 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
php 中奖概率算法实现代码
2017/01/25 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
javascript scrollTop正解使用方法
2013/11/14 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
微信支付 JS API支付接口详解
2016/07/11 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
小程序指纹验证的实现代码
2018/12/04 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
Element el-button 按钮组件的使用详解
2021/02/01 Javascript
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
python PyTorch参数初始化和Finetune
2018/02/11 Python
tensorflow构建BP神经网络的方法
2018/03/12 Python
Python装饰器知识点补充
2018/05/28 Python
关于python3中setup.py小概念解析
2019/08/22 Python
在Python中使用MongoEngine操作数据库教程实例
2019/12/03 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
python安装及变量名介绍详解
2020/12/12 Python
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
教师敬业奉献模范事迹材料
2014/05/18 职场文书
专家推荐信范文
2015/03/26 职场文书
2015个人年度工作总结范文
2015/05/28 职场文书
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS