IE浏览器升级到谷歌浏览器——报错:ActiveXObject is not defined

本文讲述了在公司升级IE浏览器到谷歌浏览器时遇到的ActiveXObject对象不兼容问题,介绍了两种判断浏览器类型并解析XML的兼容性方法,以及实战案例中如何根据不同浏览器加载XML数据并更新选项列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:目前公司需要将IE浏览器升级到谷歌浏览器,那么就会遇到各种兼容性的问题。下面说一说ActiveXObject对象不兼容的问题。

原因:ActiveObject是IE浏览器特有的对象,其他浏览器都是不兼容的。

所以需要做兼容。

一、判断是否是ie浏览器和非ie浏览器的方法有多种,在此只介绍用例中的方法:

1、解析xml字符串,得到xml对象的方式:

function createXml(str){
  if(document.all){//IE浏览器
      var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = false;
      xmlDoc.loadXML(str);
      return xmlDoc;
  }
  else{//非IE浏览器
          return new DOMParser().parseFromString(str, "text/xml");
    }
}

2、解析xml文件,将其转换为xml对象的方式:

/**
* aXMLFileName是xml文件路径名
*/
function getXmlDoc(){
    try{
      if (window.ActiveXObject){
        xmlDoc= new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = false;
        isLoaded = xmlDoc.load(aXMLFileName);
      }
      else if(document.implementation&& document.implementation.createDocument){
        try{
            xmlDoc = document.implementation.createDocument('', '', null);
            xmlDoc.async = false;
            xmlDoc.load(aXMLFileName);
        } catch(e){
            var xmlhttp = new window.XMLHttpRequest();
            xmlhttp.open("GET",aXMLFileName,false); 
            xmlhttp.send(null);
            xmlDoc = xmlhttp.responseXML;
        }
      }
      else{
          alert("load data error");
      }
    }
    catch(e){  
        alert(e.message);
    }
}

二、实战案例

var xmlDom = null;
if(window.ActiveXObject){ //兼容IE浏览器
    xmlDom = new ActiveXObject("Microsoft.XMLDOM");
    xmlDom.loadXML(message);

    var codes = xmlDom.getElementsByTagName("data");
    var id = '';
    var value = '';
    document.all.aro_id.options[j+1] = new Option(value, id);
    var flag = 0;

    for(var j = 0; j < codes.length; j++){
        if(codes[j].childNodes[0].firstChild.nodeValue != null && codes[j].childNodes[1].firstChild.nodeValue != null){
            id = codes[j].childNodes[0].firstChild.nodeValue;
            value = codes[j].childNodes[1].firstChild.nodeValue;
            document.all.aro_id.options[j+1] = new Option(value, id);
            flag = 1;
        }
    }
}else{
    //兼容谷歌浏览器
    xmlDom = new DOMParser().parseFromString(message, 'application/xml');

    var codes = xmlDom.getElementsByTagName("data");
    var id = '';
    var value = '';
    document.all.aro_id.options[j+1] = new Option(value, id);
    var flag = 0;

    for(var j = 0; j < codes.length; j++){
        id = codes[j].childNodes[1],innerHTML;
        value = codes[j].childNodes[3].innerHTML;
        document.all.aro_id.options[j+1] = new Option(value, id);
        flag = 1;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xinlianluohan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值