剖析浏览器解析xml(省事县三级联动)不兼容问题

当我们充满信心,满怀期待和激情的点下 刷新按键时 ,哇 让人崩溃的现象出现了 ,明明运行良好的代码 在换了浏览器之后 竟然"罢工了",正所谓人挪活树挪死,那我们怎样才能让这颗""在别的地方活下去呢,要想让这段代码继续运行,那我们首先要弄清楚,为什么在不同的浏览器上会出现不兼容的问题。

下面我们就借IEopera、火狐 实现三级联动来做阐述:

 首先针对不同的浏览器我们要创建不同的xmlDom对象

//IE浏览器

      xmlDoc = new ActiveXObject("Microsoft.XMLDOM");

 try{

    //firefox 其他浏览器

    xmlDoc = document.implementation.createDocument("","",null);

    }catch(er){

      alert("您的浏览器实在是太低。。。。。。。。");

   }

下一个关键的问题就是,当我们用root.childNodes;获取根节点的全部子节点是 不同的浏览器会获取到不同的只,这就是为什么在IE下运行良好 而换了浏览器就不兼容了,

因为IE自动吧空格过滤掉了,而opera 和火狐,都把空格当成了一个文本节点,所以

在遍历之前我们要进行一下元素类型判断if(provinces[i].nodeType ==1 )

还有一点要说的光有这些还不够,就是基本上这几款浏览器都能在部署到服务器之后访问,但是opera 本地访问貌似就出了些问题 那我们应该怎样解决opera的本地访问问题呢

我的opera版本是11.10 beta据测试在其一下的版本都自动Allow File XMLHttpRequest

没有允许的怎么办呢,那我们就在地址栏里直接打上about:config 回车 然后找到user prefs

然后把里面的Allow File XMLHttpRequest打勾 保存 然后重启浏览器就可以本地访问了。

下面贴一下(省,,县)三级联动具体实现代码