我在网上和StackOverflow上搜索过,但没有发现任何类似我的问题。
我有以下HTML字符串:
var txtBoxForm = '<script src="http://ADDRESS"></script><noscript><a href="http://ADDRESS" target="_blank"><img src="http://ADDRESS" border=0 width=728 height=90></a></noscript>';
我试图用以下方法解析它:
parser = new DOMParser()
xmlDoc = parser.parseFromString(txtBoxForm, "text/xml");
alert(xmlDoc);
alert(xmlDoc.firstChild.nodeName);
alert(xmlDoc.firstChild.firstChild.nodeName);
alert(xmlDoc.firstChild.firstChild.firstChild.nodeName);
alert(xmlDoc.firstChild.firstChild.firstChild.firstChild.nodeName);
问题在于,即使字符串以标记开头且没有子节点,我也会从警报中获得以下回复:
alert(xmlDoc); -> [Object document]
alert(xmlDoc.firstChild.nodeName); -> html
alert(xmlDoc.firstChild.firstChild.nodeName); -> body
alert(xmlDoc.firstChild.firstChild.firstChild.nodeName); -> parseerror
alert(xmlDoc.firstChild.firstChild.firstChild.firstChild.nodeName); -> h3
所以我的问题是:
<script>
开头,因为
字符串呢? 请帮忙。 感谢。
答案 0 :(得分:2)
似乎您无法将脚本标记传递给DOMParser
以及其他一些问题。
<doc></doc>
包裹你的代码)<scripto>
)http://jsfiddle.net/mendesjuan/aVQaP/4/
var txtBoxForm =
'<doc>'+
'<scripto src="http://ADDRESS"></scripto>'+
'<noscript>' +
'<a href="http://ADDRESS" target="_blank">'+
'<img src="http://ADDRESS" border="0" width="728" height="90" />'+
'</a></noscript></doc>';
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(txtBoxForm, "text/xml");
// outputs http://ADDRESS
console.log( xmlDoc.getElementsByTagName("scripto")[0].getAttribute("src") );
// outputs http://ADDRESS
console.log( xmlDoc.getElementsByTagName("img")[0].getAttribute("src") );
答案 1 :(得分:0)
您要解析的字符串格式不正确。如果您使用简单的字符串尝试脚本,例如“<div><p>test</p></div>
”,它按预期解析元素。
我假设,安全策略不允许,抓取这样的脚本标签,以防止脚本加载操作等。
关于使用正则表达式,下面提供了您可能期望的字符串中两个属性的src值。
<script type ="text/javascript" language="javascript">
<!--
var txtBoxForm = '<div><script src="http://ADDRESS"></script><noscript><a href="http://ADDRESS" target="_blank"><img src="http://ADDRESS" border=0 width=728 height=90></a></noscript></div>';
var exp = /src="([^"]*)"/i;
console.log(exp.exec(txtBoxForm));
-->
</script>