鸟食轩

 Microsoft .NET[C#] MVP 2003
随笔 - 429, 文章 - 235, 评论 - 5527, 引用 - 356
数据加载中……

IE7提供XMLHttpRequest对象为兼容

    在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用户之间的矛盾,而乐而不为呢?

posted on 2006-01-27 01:27 birdshome 阅读(5889) 评论(29)  编辑 收藏 网摘 所属分类: Jscript&Dhtml开发

评论

#1楼    回复  引用    

我在为公司做网站的时候,初期使用IE进行调试,当初也曾经考虑过用firefox调试,但是因为使用的人不多,就没有采用。

页面全部用web标准编写,IE中调试。到最后才发现,原来的方法是大错特错了。

后来,自己浏览只用fx后,发现如果调试的时候用fx,能够生成严谨符合标准的代码了。这些代码在fx中可以正常浏览,而在ie中基本上也可以很好的看,只要稍微的修改下css就行了。但是之前,用ie先调试的话,在fx中是一团糟。说明用ie调试会给自己错觉,实际上生成了不合标准的代码但是自己不知道。

所以,建议大家写xhtml的时候,优先使用fx调试,不要以为访问用户里面用fx的少就不用。当你在fx中完全调试好后,你在用ie浏览一次,就会发现只会有一小部分要修改的地方。这样完全可以兼容两种浏览器。

至于楼主说的xmlhttprequest问题,其实是ms有那么一点点意识到了标准的重要性,才会加入的,而保留之前那种不标准的xmlhttp完全只是为了保持和旧的版本的兼容性而已。

另外,我不知道fx为什么要再开一个ie兼容模式,你觉得这种兼容模式就会比基于ie内核的maxthon更好吗?

还有个问题,欧美国家的网站大部分都能比较好的支持fx的,只是在国内,ie only的网站比较多。原因很简单,国内盗版率太高。大家都用windows盗版,用其它平台的非常少,自然用ie的人就多了。国外就不一样,盗版率低,虽然ie免费,但是win要钱。
2006-01-27 10:33 | 飞雪尔 [未注册用户]

#2楼    回复  引用    

你是站着说话不腰痛,你那点初级应用HTML就在那儿叫大家用Fx调试,你去写点复杂点的JavaScript呢,有些地方本来一句话就写完了的,就是因为FX,还要判断浏览器,代码多出来一倍。算了,就你的应用而言,你是体会不到了。
2006-01-27 12:28 | 路过 [未注册用户]

#3楼    回复  引用    

btw:
qoute“就像今天我们的网络应用技术大多并没有标准而只有RFC”
——rfc名为request for comments并不意味着都不是标准,rfc过程只是一种比较民主化、市场化的标准化手段。并非每个rfc都是标准,但其中的一部分经过修改完善后被IESG接受的确确实实成为标准,不能因为这一部分还是rfc????就认为它们不是标准
2006-01-27 14:19 | vender [未注册用户]

#4楼    回复  引用    

ikvm.net 的作者在他的blog上发过一段 牢骚 ,"Getting Incorrect Code to Run Correctly"

这里面涉及到很多问题。很多人都会喜欢ms的做法,而不是一味的所谓标准,其一是宽容问题,其二,标准受限太多,要是每个实现只完成标准所规定的内容,到最后,受苦的还是我们自己
2006-01-27 15:07 | jjx [未注册用户]

#5楼    回复  引用  查看    

这个功能有个好处,就是以后用户即使在IE7中禁止了ActiveX功能,Ajax应用程序仍然能够正常运行(如果你的代码中用了native XMLHttpRequest object 的话)。

"It decouples AJAX functionality from an ActiveX enabled environment. "

"In IE7, XMLHTTP is now also exposed as a native script object. Users and organizations that choose to disable ActiveX controls can still use XMLHTTP based web applications. (Note that an organization may use Group Policy or IE Options to disable the new native XMLHTTP object if desired.) "
2006-01-27 17:30 | Laser.NET      

#6楼    回复  引用    

不过有一些第3方开发者作了针对不同浏览器的封装
就目前的情况 还是需要给ms些压力 不然就容易回到那段没任何修正的日子
2006-01-27 20:39 | netwjx [未注册用户]

#7楼    回复  引用  查看    

我做企业网内部的b/s应用时,一般都只考虑IE;如果做internet上的网站,那就要考虑兼容一下firefox了,至于其它的浏览器就不管了。
2006-01-29 19:03 | NoMagic      

#8楼    回复  引用  查看    


这个问题就好像为何linux不能像windows那样,不是不想,而是不能。

要想和微软竞争,除非从现在开始,世界经济大衰退,20年后,微软就不存在了,所有人都进入IT业的原始社会——自由的公社。
2006-01-31 04:52 | 航天奇侠      

#9楼    回复  引用    

我和我门班的女生很少就向说过话一样,,哈哈 我是个很平常的男生没有什么人注意我
我只为谈心才来这 这可以早到温心的快乐


2006-01-31 06:03 | 刘鹏程 [未注册用户]

#10楼    回复  引用  查看    

晕……标准的目的不就是为了兼容么……

紧跟IE我觉得不妥,万一M$把某某功能申请了专利……
岂不是大家全玩完……
2006-02-01 16:00 | Hi, I am a newbie.      

#11楼    回复  引用  查看    

我的观点也是企业内部只兼容一个就好了(一般都是IE),但是在Internat上还是要多兼容一些的~
2006-02-05 09:49 | Boler Guo      

#12楼    回复  引用    

-----
怎么难道开发IE7的"新警察"不知道IE6们都用ActiveX对象XmlHttp吗?XmlHttp出了什么问题,IE7为什么要这么做?
-----
记得前一阵子看过一篇ie7开发团队的blog,新的ie的安全策略有所修改,*所有*的ActiveX,如果不做特殊设定,在*每次*运行的时候都回弹出类似sp2 的pop-up blocker的information bar,所以才需要一个原生的xmlhttp。
2006-02-10 01:28 | robaggio [未注册用户]

#13楼    回复  引用    

我作为一个使用者,很讨厌IE这种相同性质的软件装几种,我也做开发,最讨厌就是去兼容那些IE以外的浏览器,浪费时间、精力,最主要的是IE已经很好,用WINDOWS的用户都有IE,即使用户不爱用IE,必要时也能立即打开IE进行浏览,而如果页面在IE里不正常浏览,而需要在其他浏览器里才能正常浏览,难道开发者还要用户再去下载另外的浏览器安装好后再来浏览你的页面吗?,试想如果我们的网络中没有病毒爆发,我们的网速会快多少?真不理解为什么生产这么多种浏览器,有这个心情,不如开发象FLASH一样具有革命意义的插件出来。
2006-02-13 21:21 | no name [未注册用户]

#14楼    回复  引用    

如果没有Firefox/Opera们的竞争,微软会把已经下马的ie7捡起来么?会尝试加强PNG的支持么?甚至sp2中对ie6的安全改进都不会有,这就是存在竞争的必要性。Flash插件怎么了?微软一句话就可以让这一切“革命”统统进入坟墓,因为他是垄断者。
2006-03-17 09:24 | mk [未注册用户]

#15楼    回复  引用    

让firefox去死[转贴]

五个月以来,历数能让IT新闻还能HIGH得起来的事情,那一定少不了firefox这个开源的软件。

如果说反微软是IT新闻永远吸引关注的猛药,那不用怀疑firefox作为反微软新闻的一剂激情威尔刚类型的药引又让多少新闻工作者重返春天,HIGH了起来。

在firefox下载突破百万时,新闻开始欢呼了,啊,多么美好呀,微软就快完蛋了,firefox已占领微软IE市场的5%了。是啊,QQ 五年前就已是下载过百万过数百万的软件了,但欢呼在哪里啊?msn messenger完蛋了吧!
用什么浏览器,正如我选择今晚是去加洲红做咪霸还是去新出来的八二三唱K量贩与友人同乐。是要讲用途与情绪的。firefox真有新闻上吹捧得那么好吗? 让咱们来分析一下。

1.firefox是建立在开源软件Mozilla 的基础之上。
这说明firefox不过是换汤不换药,还说明了新闻里边吹捧的那个firefox的19岁作者是个天才的说法是多么的可笑,软件界从来就没有改良一个软件就能说是天才的说法。

2.firefox还很粗陋。
开源软件社群总隔一段时间就会自己推个代表来HIGH一把,比如以前在linux下号称很容易就能播放dvd的软件,(事实上它们要做大量的设置才能运行).比如N个从前号称希望之星的linux套件。 目前是firefox,firefox号称非常open,但open你个大头鬼,open的话会就不会不支持微软的众多页面技术了,比如其实很有意义的xml数据岛。

3.firefox拥有众多的插件。
所谓拥有很多插件的说法是没有意义的,第一,一个浏览器您能用到的插件会有多少,第二,别想着有着一个插件功能就拥有一切,靠好人自觉做的东西, 要么就不易用,要么就功能不强大.

4.重点的是安全问题?
别相信那些人云亦云的传媒吧,大多数媒体在提及firefox比IE更强大的安全性时,少不了说因为没有了activeX,见鬼了,activeX本身是一项极为优秀的技术,在我们应用中的许多方面都能派上用场.而看回firefox是如何个安全法的吧:把所有优秀但可能还不够完美的新技术应用全部去掉,单单留下一个看web的功能,那么众多应声虫们看来是在为我们技术的倒退而欢呼。

5.W3C是啥玩意
为什么用firefox看一些页面显示不能正常,真是的因为我们浏览的页面的错吗?为了满足所谓的标准要求,或者我们有许多不标准但很有意义的应用也要跟着倒霉了吧,比如firefox并不支持的XML数据岛。这明显不能说是微软的错,也与页面无关,只是另一个利益集团为了与微软博弈伎俩罢了。

综上所述,firefox其实不应该死,它不过是一撮利益集团的产物,该死的其实是某些时候无聊的W3C,时时刻刻都惟恐天下不乱的无知报道罢了。
2006-03-17 11:22 | eriche [未注册用户]

#16楼    回复  引用    

简单一点 你会更幸福
我们要有个公共标准
2006-05-01 20:53 | pc技术 [未注册用户]

#17楼    回复  引用    

谁让你写两套代码了?
不是已经有人说了吗,只要你写代码符合标准,不管IE/Mozilla/Opera,都不需要做太多修改,浏览器也是逐渐向标准靠拢,明显是惠而不费的事情,非要处处判断浏览器类型,只能说思路错误。
2006-06-03 11:53 | freebuilder [未注册用户]

#18楼    回复  引用    

真是一群对标准无知的人
不过物以类聚而已
大家都换这种心态的话
互联网能发展到今天这种程度吗?

只为一已的方便,不顾别的人死活,眼里就容不进一点点的沙子(FireFox),你们中国人的心胸真是狭窄得可怜呀。也难怪学们的IT发展会比不上印度呢。
2006-06-27 16:05 | yagas [未注册用户]

#19楼    回复  引用    

世界多样才好玩嘛。
反正大家都在玩。
2006-08-02 13:39 | windkoo [未注册用户]

#20楼    回复  引用    

fx不如opera专业,解析复杂,数据量大的树目录html代码时会down掉,而同样的代码在ie和opera里就没问题,这个问题近期才发现,郁闷ing..,什么时候才能修正啊.
2006-08-26 17:25 | xyleon [未注册用户]

#21楼    回复  引用    

在别的地方说过的类似的话。
用这盗版的系统,盗版的软件还那么理直气壮的说非MS的这个不好,那个不好,MS的如何好如何好。社会畸形了,心态也开始畸形。

当你能保证你的所有软件都是合法使用的,当你保证你所有的用户都是合法使用的时候,再来挑剔这些。

不然的话,去使用标准吧。上面某些还自诩为程序员,开发人员的人,连最起码的做人道德都没有,可惜呀~~

#22楼    回复  引用    

标准化受益的是整个互联网,新技术标准化有一个过程,不能因为要标准化就不发展新技术,也不能因发展新技术,就不要标准。微软IE用户多,更应该明确维护标准的责任,
2006-10-15 21:02 | js[匿名] [未注册用户]

#23楼    回复  引用    

我觉得最重要的是标准是为谁服务的,W3C的标准显然不如IE的贴近实际开发和程序员。这个东西还有什么好争的。

#24楼    回复  引用    

国外一般用fx,opera的人比ie得多,特别是在学校,很多人的笔记本因为软件费用的问题,安装的都是linux,所以ie的使用率相当低
另外,从个人角度来说,因为ie的中毒几率高,比如vison communication,我也不太喜欢
2007-02-26 02:15 | 旺才 [未注册用户]

#25楼    回复  引用    

Native,可能成为IE7.0的集成部份...不需要申明ACTIVEX,即可使用...
这个是为了更好的支持将来流行的富客户端技术,比如像AJAX
--个人想法.
2007-02-26 02:49 | cwzb [未注册用户]

#26楼    回复  引用    

[另外,我不知道fx为什么要再开一个ie兼容模式,你觉得这种兼容模式就会比基于ie内核的maxthon更好吗?]
上面是 飞雪尔 说的

我想说的是,FF确实出了所谓的IE兼容模式(2.0及以上版本)
但是,也确实和你说的一样,比MAXTHON差多了......
2007-04-08 06:03 | 小熊 [未注册用户]

#27楼    回复  引用    

个人喜好,不需要如此大动干戈
个人以为,世界多样化总不是错
也许美国挺富挺好,但是中国也不错

有些人比你有财,也比你有才,那么我想你会认为你也有生存的权利.
有些人喜欢出国,那是他有出去的能力,
有些人喜欢留在国内.那是他有爱国的品行.

有些人没有出国的能力,还喜欢没事骂自己的祖国,他是什么?
2007-09-03 15:10 | 江鸿 [未注册用户]

#28楼    回复  引用    

一群不理解不标准的人在这里yy
2008-07-19 16:30 | bbcc [未注册用户]

发表评论



姓名 [登录] [注册] 
主页
Email (仅博主可见) 
验证码 *  验证码看不清,换一张
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论   新用户注册   返回页首      

导航: 网站首页 社区 新闻 博问 闪存 网摘 招聘 .NET频道 知识库 找找看 Google站内搜索



China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务

相关文章:

相关链接: