Truly
写精彩代码 品暇逸人生

上篇文章介绍了xmlhttp调用webservice,有几点需要补充一下。

IE浏览器

var xmlHttp = new ActiveXObject("MsXml2.XmlHttp");

Mozilla/FireFox浏览器

var req = new XMLHttpRequest();

2点注意

a.某些版本的Mozilla/FireFox不支持onreadystate事件

解决:
// XmlDocument factory
function XmlDocument() {}

XmlDocument.create = function () {
  try {
   // DOM2
   if (document.implementation && document.implementation.createDocument) {
     var doc = document.implementation.createDocument("", "", null);
      
     // some versions of Moz do not support the readyState property
     // and the onreadystate event so we patch it!
     if (doc.readyState == null) {
      doc.readyState = 1;
      doc.addEventListener("load", function () {
        doc.readyState = 4;
        if (typeof doc.onreadystatechange == "function")
         doc.onreadystatechange();
      }, false);
     }
      
     return doc;
   }
   if (window.ActiveXObject)
     return new ActiveXObject(getControlPrefix() + ".XmlDom");
  }
  catch (ex) {}
  throw new Error("Your browser does not support XmlDocument objects");
};

b.不同版本的IE和Windows安装着不同版本的MSXML分析器

解决:
function getControlPrefix() {
  if (getControlPrefix.prefix)
   return getControlPrefix.prefix;
 
  var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
  var o, o2;
  for (var i = 0; i < prefixes.length; i++) {
   try {
     // try to create the objects
     o = new ActiveXObject(prefixes[i] + ".XmlHttp");
     o2 = new ActiveXObject(prefixes[i] + ".XmlDom");
     return getControlPrefix.prefix = prefixes[i];
   }
   catch (ex) {};
  }
 
  throw new Error("Could not find an installed XML parser");
}


眼下AJAX炒的很火,它是javascript和xml的技术结合,异步交互、JavaScript脚本和XML封装数据是AJAX的三大特征。xmlhttp是ms几年前就有的技术了,近年也有不少相近的架构,下篇我们将重点了解异步交互。

posted on 2005-08-31 02:53  Truly  阅读(1305)  评论(0编辑  收藏  举报