1. 程式人生 > >javaScript解析XML時IE11瀏覽器不支援xmlDoc.load()方法

javaScript解析XML時IE11瀏覽器不支援xmlDoc.load()方法

大家直接看原始碼和截圖吧!

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的標準不同,微軟喜歡作就作唄,早晚被自己作死!不作死就不會死!