javaScript解析XML時IE11瀏覽器不支援xmlDoc.load()方法
阿新 • • 發佈:2018-12-26
大家直接看原始碼和截圖吧!
jsResolveXML.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>使用javascript解析xml</title> <link rel="stylesheet" type="text/css" href="css/body.css"> <link rel="stylesheet" type="text/css" href="css/mark.css"> <link rel="stylesheet" type="text/css" href="css/console.css"> <script type="text/javascript" src="js/console.js"></script> </head> <body> <div align="center"> <h2>使用javascript解析xml</h2> </div> </body> <script type="text/javascript"> var xmlFileName = "citys.xml"; var xmlDoc = ''; if (window.ActiveXObject) { // IE var activeXNameList = new Array("MSXML2.DOMDocument.6.0", "MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0", "MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument", "Microsoft.XMLDOM", "MSXML.DOMDocument"); for (var index = 0; index < activeXNameList.length; index++) { try { xmlDoc = new ActiveXObject(activeXNameList[index]); } catch (e) { continue; } if (xmlDoc) break; } } else if (document.implementation && document.implementation.createDocument) { //非 IE xmlDoc = document.implementation.createDocument("", "", null); } else { alert('can not create XML DOM object, update your browser please...'); } xmlDoc.async = false; //同步,防止後面程式處理時遇到檔案還沒載入完成出現的錯誤,故同步等XML檔案載入完再做後面處理 alert("xmlDoc=" + xmlDoc + " " + xmlDoc.nodeName); xmlDoc.load(xmlFileName); //載入XML //JS讀取 XML 檔案中的 area 節點的方式如下: var nodeList = xmlDoc.documentElement.getElementsByTagName("area"); // IE for (var i = 0; i < nodeList.length; i++) { //...遍歷操作... var attributeValue = nodeList[i].getAttribute("areaid"); debug("IE瀏覽器效果" + attributeValue); } var nodeList = xmlDoc.getElementsByTagName("area"); // 非IE for (var i = 0; i < nodeList.length; i++) { //...遍歷操作... var attributeValue = nodeList[i].getAttribute("areaid"); debug("非IE瀏覽器效果" + attributeValue); } </script> </html>
citys.xml
<?xml version="1.0" encoding="UTF-8"?> <visiter> <area areaid="shenzhen"> <areaname>shenzhen</areaname> <user userid="001"> <name>shenzhenNBA</name> <sex>man</sex> </user> </area> <area areaid="shanghai"> <areaname>shenzhen</areaname> <user userid="002"> <name>xiaoming</name> <sex>woman</sex> </user> <user userid="003"> <name>zhangsan</name> <sex>man</sex> </user> </area> </visiter>
使用火狐瀏覽器的效果很好,沒有任何問題,如下圖:
使用IE瀏覽器(我用的是IE11版本)的效果就是報錯,如下圖:報錯的提示已經非常明顯了!
在IE瀏覽器中不支援load方法,我特意在網上查了一下,IE11和IE10,IE9,IE8有非常大的差別,真是坑爹啊!其實要說瀏覽器這東西,火狐瀏覽器,谷歌瀏覽器都挺不錯的,他們都是遵循W3C規範的,但是微軟這傢伙,挺無語的,老是喜歡有自己的一套標準,有些完全是與W3C的標準不同,微軟喜歡作就作唄,早晚被自己作死!不作死就不會死!