繁体   English   中英

浏览器之间的差异

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM