在<script>和/或<noscript>标记中找到解析<img/> src属性

时间:2016-08-12 20:00:16

标签: javascript jquery html parsing dom

我有以下字符串:

&#xA;&#xA;
 &lt; script src =“https://sys.com/lerers/adkljrver?c=28dsfsd1&w = 323434230&amp; h = 5424523420&amp; ord = [timestamp]&amp; z = 0“&gt;&lt; / script&gt;&#xA;&lt; noscript&gt;&#xA;&lt; a href =”https:// ving-sys .com / server / asfdsfsdr.bs?cn = brd&amp; pli = 107dsfsd486sdfds231&amp; Page =&amp; Pos = 1979577902“target =”_ blank“&gt;&#xA;&lt; img src =”https://bs.faf- sys.com/Serving/adServer.bs?c=8534&cn=displaying&pli=1073924861&Page=&Pos=77902"border = 0 width = 320 height = 50&gt;&lt; / a&gt;&#xA;&lt; ; / noscript&gt;&#xA;  
&#xA;&#xA;

我的目标是解析src,width和height属性,而不使用正则表达式或任何类型的indexOf ()/ loop /如果是逻辑。

&#xA;&#xA;

此解析将在浏览器中进行,因此可以使用本机浏览器功能或jQuery。

&#xA;&#xA;

我试过这个:

&#xA;&#xA;
  // myString等于上面的字符串&#xA; var $ jQueryObject = $('&lt; div&gt;'+ myString +'&lt; / div&gt;');&#xA; console.log($ jQueryObject.find('img')。attr('src'))& #xA;  
&#xA;&#xA;

返回undefined。我认为这与尝试解析noscript和script标签中的元素有关。任何返回src,height和width元素的帮助都将受到赞赏。

&#XA;

1 个答案:

答案 0 :(得分:1)

使用DOMParser将是最简单的方法 - 请参阅提供的链接中的浏览器兼容性表,特别是此WONT适用于IE9或更早版本

var parser = new DOMParser(),
    ns = document.querySelector('noscript'),
    doc = parser.parseFromString(ns.textContent, 'text/html'),
    img = doc.querySelector('img');
console.log(img.width);
console.log(img.height);
console.log(img.src);

注意:你可以这样做,以打动女孩:

var img = (new DOMParser()).parseFromString(document.querySelector('noscript').textContent, 'text/html').querySelector('img');
console.log(img.width);
console.log(img.height);
console.log(img.src);

对于IE8 / IE9,如果你必须支持它们,你可以做类似的事情

var div = document.createElement('div');
div.innerHTML = document.querySelector('noscript').textContent;
var img = div.querySelector('img');
console.log(img.width);
console.log(img.height);
console.log(img.src);

但请注意,使用此代码

会提取图片