gpt4 book ai didi

javascript - 为什么这个 Javascript DOM 代码只能在 FF 上运行,而不能在 IE 上运行?

转载 作者:行者123 更新时间:2023-12-03 08:26:59 24 4
gpt4 key购买 nike

//create an instance of the XML parser
if (window.ActiveXObject)
{
//Checking if the browser is IE
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false"; //make sure doc is fully loaded
xmlDoc.load(strPath) //load the file in the parser
if (xmlDoc.parseError.errorCode != 0)
{
alert("Error #: " + xmlDoc.parseError.errorCode;
}
}

//for mozilla based browsers
else if (document.implementation && document.implementation.createDocument)
{
xmlDoc= document.implementation.createDocument("","doc",null);
xmlDoc.async=false; //make sure doc is fully loaded
loaded = xmlDoc.load(strPath);
if(!loaded)
{
alert("Error in XML File");
}
}

//Parse the XML
var root = xmlDoc.documentElement;
level1Nodes = root.children;
for(var index1 = 0; index1 < level1Nodes.length; index1++)
{
//Extract the markup content from XML
var level1Node = level1Nodes[index1];
var strName = level1Node.children[0].textContent;
var strHeader1 = level1Node.children[1].tagName;
var strHeader1Content = level1Node.children[1].textContent;
}

“子”属性在 IE DOM 解析器中可用吗?

最佳答案

在 IE 中,XML 文档不实现与 HTML 文档相同的文档对象模型;特别是 XML Node对象没有 <a href="https://developer.mozilla.org/En/DOM/Element.children" rel="noreferrer noopener nofollow">children</a>属性,这是非标准的。

您应该使用 <a href="http://msdn.microsoft.com/en-us/library/ms757053(VS.85).aspx" rel="noreferrer noopener nofollow">childNodes</a>收藏代替。但是请注意,在 Firefox 和其他浏览器中 - 以及 IIRC,在 IE 中非常特殊的情况下 - 此集合还将包括仅包含空格的文本节点,例如原始 XML 文件中的换行符。所以你需要检查 <a href="http://msdn.microsoft.com/en-us/library/ms753745(VS.85).aspx" rel="noreferrer noopener nofollow">nodeType</a> property:如果它的值为 1,则它是一个 Element,并且将具有 tagName 等属性.

此外,作为 MSXML 实现 DOM Level 1 ,而 Firefox 实现了 DOM Level 3 ,您将无法使用 textContent属性,这是在级别 3 中引入的。相反,您将不得不迭代 childNodesnodeType === 3 并连接它们的 <a href="http://msdn.microsoft.com/en-us/library/ms756022(VS.85).aspx" rel="noreferrer noopener nofollow">nodeValue</a>属性,然后可能会想要 trim 任何前导或尾随空格。或者,如果您知道那里只会有文本节点,请调用 <a href="http://msdn.microsoft.com/en-us/library/ms759154(VS.85).aspx" rel="noreferrer noopener nofollow">normalize</a>元素的方法,以确保它只有一个文本节点子节点。

从来没有人说过这东西应该很容易 :-(

关于javascript - 为什么这个 Javascript DOM 代码只能在 FF 上运行,而不能在 IE 上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1464328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com