繁体   English   中英

使用InnerHTML解析IMG标签Javascript

[英]Parsing IMG tags Javascript using InnerHTML

这是两难选择:

我正在做一个JavaScript效果。 为此,我使用.innerHTML拉节点及其子节点(包括图像)。 然后尝试通过DOM解析它。 当到达图像标签时,将引发解析错误。 当我警告innerHTML时,我看到它正在剥离IMG标签的结尾。

我不知道问题出在解析器还是innerHTML。 如何获取该节点,获取内部内容并将其解析为XML?

看起来这里发生了类似的事情: innerHTML从图像标记中删除了斜杠

(这是我在互联网上搜索了将近两天后发现的唯一涉及此问题的页面。)

这是我正在使用的解析代码:

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和其他浏览器的标准)来做到这一点? 我应该使用什么哑剧?

这是我尝试解析的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>")

感谢所有的帮助!

我假设您通过使用innerHTML来获取“ txt”变量? 我在各种浏览器中进行了测试,它确实去除了结尾标记。 也许,在将其发送到loadXMLString函数之前,您可以使用正则表达式将它们添加回去吗?

var re = new RegExp("(<img\b[^>]*)>", "g");
txt = txt.replace(re, "$1 />");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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