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中令你抓狂的魔术变量
Nov 30 Javascript
用RadioButten或CheckBox实现div的显示与隐藏
Sep 21 Javascript
JavaScript中的small()方法使用详解
Jun 08 Javascript
window.onload使用指南
Sep 13 Javascript
jquery限定文本框只能输入数字(整数和小数)
Jan 08 Javascript
jQuery实现的简单百分比进度条效果示例
Aug 01 Javascript
js模拟支付宝密码输入框
Apr 11 Javascript
vue scroller返回页面记住滚动位置的实例代码
Jan 29 Javascript
jQuery实现的导航条点击后高亮显示功能示例
Mar 04 jQuery
JS数组Object.keys()方法的使用示例
Jun 05 Javascript
ionic2.0双击返回键退出应用
Sep 17 Javascript
通过微信公众平台获取公众号文章的方法示例
Dec 25 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
PHP+DBM的同学录程序(2)
2006/10/09 PHP
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
php简单实现无限分类树形列表的方法
2015/03/27 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
PHP处理二进制数据的实现方法
2016/06/13 PHP
php实现微信扫码支付
2017/03/26 PHP
PHP CURL使用详解
2019/03/21 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
Javascript - HTML的request类
2006/07/15 Javascript
[原创]静态页面也可以实现预览 列表不同的显示方式
2006/10/14 Javascript
javascript 日历提醒系统( 兼容所有浏览器 )
2009/04/07 Javascript
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
那些年,我还在学习jquery 学习笔记
2012/03/05 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
ES6与CommonJS中的模块处理的区别
2018/06/13 Javascript
Vue CLI3搭建的项目中路径相关问题的解决
2018/09/17 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
python日志logging模块使用方法分析
2019/05/23 Python
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
小学生防溺水广播稿
2014/01/12 职场文书
幼儿园庆六一游园活动方案
2014/01/29 职场文书
网络编辑岗位职责
2014/03/18 职场文书
一体化教学实施方案
2014/05/10 职场文书
物资采购方案
2014/06/12 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
2015年幼儿园卫生保健工作总结
2015/05/12 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL