我在tryit编辑器上测试了一些代码,当我在本地保存代码时无法复制功能,并且想知道任何人都有任何关于为什么会出现这种情况的想法。
代码段是
<html>
<head>
<script type="text/javascript" src="http://www.w3schools.com/dom/loadxmldoc.js"></script>
</head>
<body>
<script type="text/javascript">
xmlDoc=loadXMLDoc("http://www.w3schools.com/dom/books.xml");
for (j=0;j<xmlDoc.getElementsByTagName("book").length;j++ )
{
x=xmlDoc.getElementsByTagName("book")[j].childNodes;
y=xmlDoc.getElementsByTagName("book")[j].firstChild;
for (i=0;i<x.length;i++)
{
if (y.nodeType==1)
{
//Process only element nodes (type 1)
document.write(y.nodeName + " : " +x[i].childNodes[0].nodeValue + "<br />");
}
y=y.nextSibling;
}
}
</script>
</body>
</html>
有人可以告诉我这里我做错了吗
非常感谢提前
编辑:感谢所有w3schools小费。我认为我滥用tryit比我应该停止这样做
答案 0 :(得分:2)
loadXMLDoc()
w3schools在幕后提供使用XMLHttpRequest
,这限制了同源策略。 (SOP)
SOP states您只能向同一域上的资源发出请求。
当您在本地保存文件时,您不再访问w3schools域,因此无法访问该文件。
function loadXMLDoc(dname) {
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
}
else {
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET", dname, false);
xhttp.send();
return xhttp.responseXML;
}
答案 1 :(得分:1)
您可能在此处遇到相同的原始政策。
尝试在本地保存XML文件并从那里加载,而不是w3schools的远程服务器。
答案 2 :(得分:0)
首先,您应该避免使用w3schools作为参考http://w3fools.com
其次,你不能这样做,因为loadXMLDoc
正在使用AJAX,你不能使用AJAX在不同的域中请求文档(除非你使用JSONP,但这是另一个主题共)