1、引言
js在处理xml过程中,由于浏览器兼容性问题,要做许多的兼容处理,随着浏览器是升级,大多数浏览器都已经默认保持统一标准,以便于我们日常的开发,然而有了微软的IE这个奇葩的存在,形成了大多数前端开发者的噩梦,最近做的一个项目就踩中一个大坑,IE11和以往的IE6、7、8等既然都不一样,并且没和其他浏览器保持统一标准
2、问题描述
前端开发过程中一般希望能全部使用原生js就避免使用封装好的js库,所以在解析xml字符串的过程中一开始选择使用原始js来实现,从w3cSchool找到一段代码,看了下好像实现了功能并且保证了兼容性的代码
function loadXmlString(XmlString) {
try { // Internet Explorer
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.loadXML(XmlString);
} catch (e) {
try { // Firefox, Mozilla, Opera, etc
// xmlDoc=document.implementation.createDocument("","",null);
parser = new DOMParser();
xmlDoc = parser.parseFromString(XmlString, "text/xml");
} catch (e) {
alert(e.message);
}
}
try {
return (xmlDoc);
} catch (e) {
alert(e.message);
}
return (null);
}
在谷歌火狐以及IE8的测试下正常运行能解析返回一个正常的dom对象,然而提交到测试那边发现此代码在IE11下既然不能正常运行,谷歌搜索了一下IE11不再支持ActiveXObject(“Microsoft.XMLDOM”)这个功能来实现xml字符串的解析返回dom对象,所以为了保证兼容性,选择引入jquery来实现这块功能,避免因为兼容性问题导致功能的不完善
jQuery.parseXML(data)
\\jquery提供此方法可以解析xml字符并返回一个dom对象
\\注意不是放回jq对象,但是可以和正常的dom对象一样通过转化为jq对象