如何使用JavaScript从iframe中提取链接

3

Example:

iframe.html

<a href="http://www.google.com">Google</a>
bla bla bla
<a href="http://www.yahoo.com">Yahoo</a>

index.html

<script>
...
</script>
There are the links from "iframe.html"
http://www.google.com
http://www.yahoo.com

index.html和iframe.html是否在同一个域名下? - undefined
iframe.htmlindex.html的域名、协议和端口是否相同? - undefined
查看此答案。detect url's in text with Javascript - undefined
@Adeel:这是在字符串中检测URL。OP想要在DOM中找到链接。 - undefined
2个回答

4
如果域名、协议和端口匹配,只需使用...
var links = $('iframe:first').contents()[0].links;

jsFiddle

...或者不用jQuery...

var iframe = document.getElementsByTagName('iframe')[0],
    doc = iframe.contentDocument || iframe.contentWindow.document; 

var links = doc.links;

jsFiddle

这利用了document.links属性。


这很酷,但他仍然需要迭代该数组来显示它们,可能会使用$.each()函数,所以与直接从contents()选择器迭代锚点相比,实际上并没有节省太多工作量,对吧? - undefined
@AlienWebGuy 它返回超过 a 个元素,并且只返回具有 href 属性的 a 元素。 - undefined

1
假设您的 iframe 与您的网站位于同一域中,并且具有 ID“my_iframe”,并且您有一个与 ID“results”相对应的 div,那么这应该适用于您:
$("#my_iframe").contents().find('a').each({
    $('#results').append($(this).attr('href') + '<br />');
});

花点时间了解一下JQuery的.contents()函数。


那种向#results添加的方式有点麻烦。为什么不用append()呢? - undefined
好的呼叫,我只用它来添加特定节点,但是也可以附加字符串,这完全说得通。谢谢,伙计 :) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接