这是一个难题:
我正在做一个 javascript 效果。为此,我使用 .innerHTML 拉取一个节点及其子节点(包括图像)。然后尝试通过 DOM 解析它。当它到达图像标签时,它会抛出一个解析错误。当我提醒 innerHTML 时,我看到它正在去除 IMG 标签的结尾部分。
我不确定问题出在解析器还是 innerHTML 上。我如何获取此节点、获取内部内容并将其解析为 XML?
看起来类似的事情发生在这里:innerHTML removing closing slash from image tag
(经过将近两天的搜索,这是我在互联网上发现的唯一涉及此问题的页面。)
这是我使用的解析代码:
function loadXMLString(txt) {
if (window.DOMParser) {
parser=new DOMParser();
xmlDoc=parser.parseFromString(txt,"text/xml");
} else { // Internet Explorer
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(txt);
}
return xmlDoc;
}
解决方案是更改 MIME 类型,但是如何使用 JavaScript 解析器(MS ActiveX 和其他浏览器的标准)来做到这一点?我应该使用什么 mime?
这是我试图解析的 DOM 元素:
<div style="display:none" id="ItemsContainer" name="ItemsContainer">
<SPAN>
<a href="url1"><img src="1.jpg" alt="alt1" /></a>
<a href="url2"><img src="2.jpg" alt="alt2" /></a>
<a href="url3"><img src="3.png" alt="alt3" /></a>
<a href="url4"><img src="4.jpg" alt="alt4" /></a>
</SPAN>
</div>
如果我将标签更改为另一个名称,那么它就可以工作了。似乎是 innerHTML 破坏了标签,或者解析器无法解析 IMG 标签。
请指教。 提前致谢!
最佳答案
IE 自动将标签名称大写(因此变成 )所以我使用了 txt.replace(/><\/a>/g, " /></a>").replace(/><\/A>/g, " /></A>")
感谢所有提供帮助的人!
关于javascript - 使用 InnerHTML 解析 IMG 标签 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8764669/