【问题标题】:retrieve url from div class with javascript [closed]使用 javascript 从 div 类中检索 url [关闭]
【发布时间】:2015-11-16 18:35:52
【问题描述】:

我正在尝试使用 javascript 从 div 类中检索 url

<div class="img-cover" style="background-image: url('https://scontent.cdninstagram.com/hphotos-xta1/t51.2885-15/s320x320/e15/11420829_845417035570963_433708785_n.jpg')"></div>

我已将此页面加载到 iOS 上的 UIWebView,http://websta.me/popular

我尝试检索所有图像的 url,我查找了源页面,发现我需要的所有图像都作为背景图像加载到 div 类中,如上例所示

我使用了 document.getElementsByClass 但不起作用。

我想在 iOS 应用中实现这一点,从 uiwebview 检索图像 url 并保存到 nsarray

【问题讨论】:

  • 向我们展示您迄今为止的尝试。
  • @blm NSString *someHTML = [MywebView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('img-cover')[0].innerHTML;"]; NSLog(@"Images : %@", someHTML);
  • 将其添加到问题中,并说明其作用。 “不起作用”是不够的,要具体。但是,我注意到您使用的是 innerHTML,而您的示例没有任何 innerHTML。
  • @blm 刚刚编辑了问题

标签: javascript ios objective-c uiwebview


【解决方案1】:

class 名称中获取字符串:

NSString *someHTML = [theWebView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('class name')[0].innerHTML;"];

【讨论】:

  • 它不起作用..我用 img-cover 替换了“类名”并且不起作用..可能是因为我有很多同名的类?
【解决方案2】:

通过问题中的示例&lt;div&gt;标签,你想要:

NSString *someHTML = [MywebView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('img-co‌​ver')[0].style.backgroundImage;"];

您在评论中提供的示例代码使用.innerHTML。但是,您的示例 &lt;div&gt; 标记没有任何内部 HTML。内部 HTML 是开始标记和相应结束标记之间的 HTML,因此如果您有 &lt;div&gt;hello&lt;/div&gt;,则出现在该元素的 .innerHTML 属性中的内部 HTML 将是 hello。在您的示例中,URL 实际上位于&lt;div&gt;style 属性中,因此您想使用.style 来获取它,那么您需要background-image 样式,它位于backgroundImage 的属性中style 对象。

但是请注意,您指向的页面没有 &lt;div&gt; 标签中的图像,而是在锚点中(&lt;a&gt; 标签),因此您可能需要稍微修改该代码,但它们仍然具有您希望在style 属性中采用background-image 样式的URL,以便该部分保持不变。

【讨论】:

  • 字符串不返回任何值.. 我试过这个: NSString *imageURLString = [MywebView stringByEvaluatingJavaScriptFromString:@"(function() {var images=document.getElementsByClassName('img-co‌​ver ')[0].style.backgroundImage;var imageUrls=[];[].forEach.call(images, function(el) { imageUrls[imageUrls.length] = el.url;}); 返回 JSON.stringify(imageUrls );})()"];
  • 你确定 img-cover 类是正确的吗?当我查看您在问题中链接到的页面时,该类没有任何内容(该字符串根本不会出现在页面源中的任何位置)。这是我现在看到的:&lt;a href="..." title="Share on Tumblr" style="display:inline-block; text-indent:-9999px; overflow:hidden; width:81px; height:20px; background:url('http://platform.tumblr.com/v1/share_1.png') top left no-repeat transparent;"&gt;&lt;/a&gt;(我省略了 href,因为它使评论太长了)。也许一次尝试一步,只需获取元素,看看是否有效,等等。
【解决方案3】:

这可能有助于检索您要查找的内容:

var myLinks = document.getElementsByTagName("a");

给你的 div 一个这样的 ID:

然后在您的脚本中,您可以调用上面的 URL,并将“a”替换为您为 div 选择的名称。

【讨论】:

  • 我没有任何“a”标签。我只有很多
    scontent.cdninstagram.com/hphotos-xta1/t51.2885-15/s320x320/e15/…> 我想检索这些 url
猜你喜欢
  • 2014-03-18
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 2019-01-15
相关资源
最近更新 更多