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入门教程(1) 什么是JS
Jan 31 Javascript
js动态创建、删除表格示例代码
Aug 07 Javascript
easyui datagrid 键盘上下控制选中行示例
Mar 31 Javascript
angularjs 处理多个异步请求方法汇总
Jan 06 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
Sep 14 Javascript
浅谈Sublime Text 3运行JavaScript控制台
Jun 06 Javascript
JS获取鼠标相对位置的方法
Sep 20 Javascript
VueJS组件之间通过props交互及验证的方式
Sep 04 Javascript
jQuery实现右侧抽屉式在线客服功能
Dec 25 jQuery
vue 中filter的多种用法
Apr 26 Javascript
vue刷新页面时去闪烁提升用户体验效果的实现方法
Dec 10 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
Jul 15 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
我的论坛源代码(四)
2006/10/09 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
2013/04/10 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
php进程daemon化的正确实现方法
2018/09/06 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
js中获取事件对象的方法小结
2011/03/13 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
2014/10/17 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
js实现日历的简单算法
2017/01/24 Javascript
js实现分页功能
2017/05/24 Javascript
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
python 实现一个简单的线性回归案例
2020/12/17 Python
如何查看python关键字
2021/01/17 Python
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
物控部经理职务说明书
2014/02/25 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书
2014年环境整治工作总结
2014/12/10 职场文书
生日寿星公答谢词
2015/09/29 职场文书
党员反邪教心得体会
2016/01/15 职场文书
送给客户微信问候语!
2019/07/04 职场文书
mysql部分操作
2021/04/05 MySQL
详解MongoDB的条件查询和排序
2021/06/23 MongoDB