[英]Differences between browsers
我使用此脚本以便从xml文件读取并将其发布到asp.net页面:
<script type="text/javascript">
var doc = "Instructions.xml";
var path = "/pages/Support/Word/";
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", path + doc, false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
document.getElementById("head").innerHTML =
xmlDoc.getElementsByTagName("row")[0].childNodes[0].nodeValue;
document.getElementById("text").innerHTML +=
xmlDoc.getElementsByTagName("line")[0].childNodes[0].nodeValue
</script>
该脚本在Google Chrome浏览器和Safari中可以正常运行; 但是在IE7和Mozilla中根本不起作用……就是那样。
有人知道为什么会发生这种情况并给予大力帮助吗?
其他更新
好吧,我尝试了很多次,同时也看着调试器,但我只看到一个问题。
程序上线时
document.getElementById("head").innerHTML = xmlDoc.getElementsByTagName("text")[0].childNodes[0].nodeValue;
然后抛出一个JavaScript runtime error: Unable to get property 'childNodes' of undefined or null reference
如果这样做有帮助
这篇文章应该回答您的问题: 检索跨浏览器XmlHttpRequest的最简单方法
它说明了如何迭代不同的解决方案,直到找到适合该浏览器的解决方案。
您可以将答案1中的代码插入到脚本标签(现有标签或新标签)中。
要获取/发布内容,您可以使用链接中提到的sendRequest(url,callback,postData)
函数。 它具有3个参数:用于url的字符串,用于请求执行回调的回调函数,最后一个为布尔值(true或false)以指示该函数应使用POST(true)还是GET(false)。 在您的情况下,它将是GET。 记住要实现一种错误处理方式,以防万一出现问题(代码中的注释)
总结起来就是这样(记住在链接中添加代码(1.答案)):
<script type="text/javascript">
function performAction()
{
var doc = "Instructions.xml";
var path = "/pages/Support/Word/";
sendRequest(path + doc, requestCallback, false);
}
function requestCallback(xmlHttp)
{
var xmlDoc = xmlHttp.responseXML;
document.getElementById("head").innerHTML = xmlDoc.getElementsByTagName("row")[0].childNodes[0].nodeValue;
document.getElementById("text").innerHTML += xmlDoc.getElementsByTagName("line")[0].childNodes[0].nodeValue;
}
</script>
最终……在网上冲浪了很多之后……我发现了这个问题的问题。 在我的.xml文件中,我具有以下结构:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/3/main">
<w:row>
<w:text>
<w:line>
</w:line>
</w:text>
</w:row>
</w:document>
Google和Safari将node name
理解为line
而其他浏览器则不。 因此,我更改了node name
并将其node name
为<text>
或<line>
,然后所有浏览器都理解相同的问题。
但是我感觉这是来自Internet Explorer和Mozilla站点的非常挑衅的行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.