<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[摘录：XMLHttpRequest与浏览器之别]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 16 Jan 2008 05:38:51 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	还记得几年前的那些讨厌的浏览器战争吗？没有一样东西在不同的浏览器上得到同样的结果。不管您是否相信，这些战争仍然在继续，虽然规模较小。但令人奇怪的是，XMLHttpRequest 成了这场战争的牺牲品之一。因此获得 XMLHttpRequest 对象可能需要采用不同的方法。下面我将详细地进行解释。<br/><br/>使用 Microsoft 浏览器<br/><br/>Microsoft 浏览器 Internet Explorer 使用 MSXML 解析器处理 XML。因此如果编写的 Ajax 应用程序要和 Internet Explorer 打交道，那么必须用一种特殊的方式创建对象。<br/><br/>但并不是这么简单。根据 Internet Explorer 中安装的 JavaScript 技术版本不同，MSXML 实际上有两种不同的版本，因此必须对这两种情况分别编写代码。请参阅如下代码，其中的代码在 Microsoft 浏览器上创建了一个 XMLHttpRequest。<br/><br/><br/><br/><div class="code"><br/><br/>var xmlHttp = false;<br/>try &#123;<br/>xmlHttp = new ActiveXObject(&quot;Msxml2.XMLHTTP&quot;);<br/>&#125; catch (e) &#123;<br/>try &#123;<br/>xmlHttp = new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;);<br/>&#125; catch (e2) &#123;<br/>xmlHttp = false;<br/>&#125;<br/>&#125;<br/><br/> </div><br/><br/><br/>现在只要牢牢记住其中的两行代码：<br/><br/><div class="code"><br/>xmlHttp = new ActiveXObject(&quot;Msxml2.XMLHTTP&quot;);<br/></div><br/><br/>和<br/><div class="code"><br/>xmlHttp = new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;);<br/></div><br/><br/>这两行代码基本上就是尝试使用一个版本的 MSXML 创建对象，如果失败则使用另一个版本创建该对象。不错吧？如果都不成功，则将 xmlHttp 变量设为 false，告诉您的代码出现了问题。如果出现这种情况，可能是因为安装了非 Microsoft 浏览器，需要使用不同的代码。<br/><br/>处理 Mozilla 和非 Microsoft 浏览器<br/><br/>如果选择的浏览器不是 Internet Explorer，或者为非 Microsoft 浏览器编写代码，就需要使用不同的代码。事实上就是如下所示的简单代码：<br/><br/><br/><div class="code"><br/>&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;<br/>var xmlHttp = new XMLHttpRequest();<br/>&lt;/script&gt;<br/><br/></div><br/><br/><br/>这行简单得多的代码在 Mozilla、Firefox、Safari、Opera 以及基本上所有以任何形式或方式支持 Ajax 的非 Microsoft 浏览器中，创建了 XMLHttpRequest 对象。<br/><br/>结合起来<br/><br/>关键是要支持所有浏览器。谁愿意编写一个只能用于 Internet Explorer 或者非 Microsoft 浏览器的应用程序呢？或者更糟，要编写一个应用程序两次？当然不！因此代码要同时支持 Internet Explorer 和非 Microsoft 浏览器。如下显示了这样的代码。<br/><br/><div class="code"><br/>&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;<br/>var xmlHttp = false;<br/><br/>try &#123;<br/>xmlHttp = new ActiveXObject(&quot;Msxml2.XMLHTTP&quot;);<br/>&#125; catch (e) &#123;<br/>try &#123;<br/>xmlHttp = new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;);<br/>&#125; catch (e2) &#123;<br/>xmlHttp = false;<br/>&#125;<br/>&#125;<br/><br/>if (!xmlHttp &amp;&amp; typeof XMLHttpRequest != &#039;undefined&#039;) &#123;<br/>xmlHttp = new XMLHttpRequest();<br/>&#125;<br/>&lt;/script&gt;<br/><br/> <br/></div><br/><br/>这段代码的核心分为三步：<br/><br/>1，建立一个变量 xmlHttp 来引用即将创建的 XMLHttpRequest 对象。 <br/><br/>2，尝试在 Microsoft 浏览器中创建该对象： <br/>尝试使用 Msxml2.XMLHTTP 对象创建它。 <br/>如果失败，再尝试 Microsoft.XMLHTTP 对象。 <br/><br/>3，如果仍然没有建立 xmlHttp，则以非 Microsoft 的方式创建该对象。<br/><br/>最后，xmlHttp 应该引用一个有效的 XMLHttpRequest 对象，无论运行什么样的浏览器。<br/><br/><br/>Tags - <a href="http://www.dzhope.com/tags/ajax/" rel="tag">ajax</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] 摘录：XMLHttpRequest与浏览器之别]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>