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對象