【发布时间】:2012-01-06 21:19:14
【问题描述】:
这是两难境地:
我正在做一个 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 标签。
请指教。 提前致谢!
【问题讨论】:
-
您是否尝试过使用
application/xhtml+xmlmime 类型?这将比text/xml更适合您的文档,因为如果我没记错的话,严格的 xml 需要结束标记。 -
你考虑过
document.getElementById("ItemsContainer").getElementsByTagname("img") -
mplungjan,我没有。我会考虑的。
-
Diodeus,XML 方法是因为我后来在 javascript 中对它做了什么。我把所有的信息都做成了一些图形和叠加效果。我希望我想将其保留在标准 HTML 中以用于 SEO 目的。马特,如果我这样做,我该如何更改 ActiveX 版本的解析器的 mime-type?
-
客户端对一些 innerHTML 的处理对 SEO 来说是否有趣 - 蜘蛛需要一个非常聪明的解析器来理解 javascript 操纵的东西
标签: javascript parsing dom image innerhtml