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