`
kankan1218
  • 浏览: 276865 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

IE与Firefox下XMLHttp的创建

    博客分类:
  • ajax
阅读更多
创建一个XMLHttp对象

  显然,使用一个XMLHttp对象的第一步,是要创建它,因为Microsoft对此的实现是ActiveX控件,所以你也必须在JavaScript中使用ActiveXObject的所有者类,并传递给它一个XMLHttp控件的签名:

  var oXmlHttp = new ActiveXObject("Microsoft.XMLHttp");

  上述代码创建了XMLHttp对象的第一个版本(其与IE 5.0一同发布),问题是,随着后续MSXML库的发布,也发布了好几个不同的新版本,每次发布都带来了更好的稳定性与更快的速度,所以,必须要确定你使用的是用户电脑上可用的最新版本。每个版本的签名如下:

Microsoft.XMLHttp

MSXML2.XMLHttp

MSXML2.XMLHttp.3.0

MSXML2.XMLHttp.4.0

MSXML2.XMLHttp.5.0

  不幸的是,确定可用最佳版本唯一的方法,是依次尝试创建它们。因为其本身为一个ActiveX控件,任何创建对象上的失败,都会抛出一个错误,这意味着你必须在一个try…catch块中编写这些代码,如下:

function createXMLHttp() {

var aVersions = [ "MSXML2.XMLHttp.5.0",

"MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",

"MSXML2.XMLHttp","Microsoft.XMLHttp"

];

for (var i = 0; i < aVersions.length; i ) {

try {

var oXmlHttp = new ActiveXObject(aVersions[i]);

return oXmlHttp;

} catch (oError) {

//Do nothing

}

}

throw new Error("未安装MSXML!");

}
 
 函数createXMLHttp()中保存了一个XMLHttp签名的数组,经常使用的靠前,并遍历此数组以尝试用每个签名创建一个XMLHttp对象。假如创建失败,catch语句将会捕捉到一个JavaScript错误,并尝试下一个签名。当对象被创建后,它将被返回给调用者,假如函数结束时仍没有创建一个XMLHttp对象,将会抛出一个错误指出创建失败。

  幸好,在以上浏览器中创建一个XMLHttp对象还算是比较轻易的,Mozilla Firefox、Safari和Opera都可以使用下面这行代码:

  var oXmlHttp = new XMLHttpRequest();

  自然地,它以一种跨浏览器的方式帮助开发者创建XMLHttp对象。你还可以修改前面定义过的createXMLHttp()函数,生成一个如下的函数:

function createXMLHttp() {

if (typeof XMLHttpRequest != "undefined") {

return new XMLHttpRequest();

} else if (window.ActiveXObject) {

var aVersions = [ "MSXML2.XMLHttp.5.0",

"MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",

"MSXML2.XMLHttp","Microsoft.XMLHttp"

];

for (var i = 0; i < aVersions.length; i ) {

try {

var oXmlHttp = new ActiveXObject(aVersions[i]);

return oXmlHttp;

} catch (oError) {

//Do nothing

}

}

}

throw new Error("不能创建XMLHttp对象!");

}
  
现在,这个函数先检查是否定义了一个XMLHttpRequest类(使用typeof操作符),假如类XMLHttpRequest存在,它将被用于创建XMLHttp对象;否则,函数检查ActiveXObject类是否存在,假如存在,就执行一遍为IE创建XMLHttp对象相同的过程。假如以上两个测试都失败了,就会抛出一个错误。

  另一种创建跨浏览器XMLHttp对象的方法,就是使用已为跨浏览器编写的类库:zXml。它由两位作者编写,可从http://www.nczonline.net/downloads/处下载,库中定义了一个创建XMLHttp对象的单一函数:

  var oXmlHttp = zXmlHttp.createRequest();

  函数createRequest与zXml库本身,将会贯穿全文,以帮助处理有关跨浏览器的Ajax技术。

  在创建完一个XMLHttp对象之后,便可预备从JavaScript中发起HTTP请求。首先调用open()方法,由其完成对象的初始化,此方法接受以下三个参数:

  1、 请求类型:指示某种请求类型的字符串,GET或POST(这也是目前所有浏览器都支持的类型)。

  2、 URL:请求将发送到的某URL。

  3、 异步(Async):一个布尔值,由其决定请求是否异步。

  最后一个代表异步的参数,在此非常重要,因为它控制了JavaScript怎样执行请求。当设置为true时,请求被异步发送,JavaScript代码不会等待响应而继续执行,必须设置一个事件处理函数以监视对请求的响应。假如设置为false,请求被同步发送,而JavaScript会在继续执行代码之前等待来自服务器的响应;这意味着假如响应需要很长时间,那么用户将不能操作浏览器,直至响应完成。因此,开发Ajax应用程序最好的方法是,对数据的常规返回操作,尽量使用异步请求,而同步请求用于发送和接收与服务器之间的短小信息。

  如对某一info.txt文件的异步GET请求,代码如下:

  var oXmlHttp = zXmlHttp.createRequest();

  oXmlHttp.open("get", "info.txt", true);

  请注重此处的第一个参数,也就是请求类型,即使在技术层面要求请求类型全部为大写字符,但此处使用小写也是没关系的。
分享到:
评论

相关推荐

    IE和Firefox对JavaScript的兼容

    例如,创建XMLHttpRequest对象,IE可能使用`new ActiveXObject("Microsoft.XMLHTTP")`,而Firefox则使用`new XMLHttpRequest()`。在处理事件监听器时,IE使用attachEvent,Firefox使用addEventListener。 再者,CSS...

    XmlHttp.rar_firefox_opera_xmlhttp

    XmlHttp对象参考: 现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

    XMLHTTP对象参考手册

    最通用的定义为:XmlHttp是一套可以在...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

    XmlHttp对象参考

    最通用的定义为:XmlHttp是... &lt;br&gt;现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

    XmlHttp中文参考手册

    XmlHttp中文参考手册 ...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

    XMLHttp中文参考手册.rar

    XmlHttp是一套可以在Javascript、VbScript...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

    利用juery将上传的本地图片在页面上显示(兼容IE和firefox)

    这个问题在不同的浏览器中可能会有不同的处理方式,尤其是对于老版本的IE和Firefox。本文将详细讲解如何利用jQuery来实现在页面上显示用户上传的本地图片,同时确保在IE和Firefox等浏览器中的兼容性。 首先,我们...

    XMLHTTP.CHM

    XMLHTTP CHM 文档 ...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。 XmlHttp对象参考

    XMLHTTP对象参考

    XMLHTTP对象参考 XmlHttp是什么?...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

    js上传前预览图片,兼容IE,firefox,google

    这个话题涉及到的主要技术是JavaScript,特别是如何使用JavaScript来实现跨浏览器(包括IE、Firefox和Google Chrome)的图片预览功能。下面将详细介绍这一知识点。 首先,我们需要理解浏览器对文件API的支持。现代...

    XMLHTTP参考(HTML格式)

    XMLHTTP是 AJAX(异步JavaScript和XML)技术中的核心组件,它允许Web应用程序在不刷新整个页面的情况下与服务器进行通信,实现数据的动态更新。这个参考手册,以HTML格式呈现,详细介绍了XMLHTTP对象的使用方法,...

    Javascript在IE和Firefox浏览器常见兼容性问题总结

    JavaScript在不同浏览器之间存在一些兼容性问题,尤其是在早期版本的Internet Explorer(IE)和Firefox之间。这些问题主要体现在访问和操作DOM元素、事件处理、属性访问以及函数调用等方面。以下是一些关键点的详细...

    e语言-Ajax XmlHttp对象参考手册

     现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。 资源界面:资源下载:

    ajax兼容IE,FF问题

    然而,由于浏览器之间的差异,尤其是IE(Internet Explorer)与Firefox(Firefox)对Ajax的支持不尽相同,开发者常常会遇到兼容性问题。这篇博文主要探讨了如何解决Ajax在IE和Firefox上的兼容性问题。 首先,让我们...

    Firefox浏览器兼容JS脚本供参考

    通过理解和应用这些兼容性技巧,开发者可以创建在Firefox和其他浏览器中都能正常工作的JavaScript代码。在实际开发过程中,还应考虑使用像jQuery这样的库,它们已经处理了许多浏览器兼容性问题,让开发者能更专注于...

    JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐) .zip

    本文将详细讲解如何使用JavaScript实现这一功能,并确保兼容Internet Explorer(IE)和Firefox这两种主流浏览器。 首先,我们需要理解XML(Extensible Markup Language)是一种用于存储和传输结构化数据的标记语言...

    JS读取本地XML(支持IE和火狐)

    这个场景下,我们关注的重点是如何在不依赖用户权限提示的情况下,使用JS在Internet Explorer(IE)和Firefox这两个浏览器中读取XML文件。本文将详细介绍实现这一功能的技术要点。 首先,我们需要了解...

    JS实现单图片预览,兼容IE、火狐

    本文将深入探讨如何使用纯JS实现这一功能,同时确保兼容性覆盖到古老的Internet Explorer(IE)和Firefox浏览器。我们首先需要了解的是,浏览器对文件API的支持程度不同,特别是对于IE,我们需要采用一些特殊的技术...

    JS操作XML文件,兼容火狐、IE

    由于浏览器的实现差异,尤其是Firefox和IE之间的兼容性问题,需要特别注意处理方式。以下将详细介绍如何使用JavaScript操作XML文件,并确保在Firefox和IE之间具有良好的兼容性。 1. 创建XMLHttpRequest对象 在...

Global site tag (gtag.js) - Google Analytics