javascript DOMParser解析文档而不是字符串
javascript DOMParser parsing document not the string
我在网络和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>
开头,因为字符串有吗 - 我做错什么了吗
- 我怎样才能正确解析那个字符串代码?我的意图是从脚本中获取src和img标签
请帮忙。谢谢
似乎无法将脚本标记传递给DOMParser
,此外还有一些其他问题。
- XML文档必须有一个根元素(我用
<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") );
<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>
相关文章:
- 如何通过JS在不干扰其标记的情况下更改HTML文档中字符串的所有实例
- 在 $( 文档 ).ready 函数中使用字符串名称调用 javascript 函数
- 如何检索其属性为给定参数的子字符串的所有文档
- 将字符串转换为HTML文档
- 使用 shift 在具有字符串/数组的文档中查找元素
- 如何将 HTML 字符串附加到文档片段
- 如何将一些参数从javascript接收响应字符串 asp.net 页面并更新html文档
- 在 html 文档中突出显示不同字符串的最快方法是什么
- 更新文档,但出现错误:对于未定义的值,强制转换为字符串失败
- JS未终止的字符串文字文档写入
- MongoDB(通过Meteor)在更新集合文档时将对象属性视为字符串
- 如何在Mongo中替换所有文档中的字符串
- 正则表达式字符串在文档中替换为 JavaScript
- javascript DOMParser解析文档而不是字符串
- Google Apps脚本中Google文档中字符串的文本格式
- 查找具有字符串ID'数组的文档;s在MongoDB中
- 从字符串创建一个 DOM 文档,不带 JQuery
- JavaScript文档对象lastModified使用toLocale字符串
- 一次加载两个HTML文档(从字符串加载iframe内容)
- 文档的地方.在元素中写入字符串