我使用DOM来从给定的html源中提取所有HREF-s。但是,有一个问题:如果我有这样的链接:
<LINK rel="alternate" TYPE="application/rss+xml" TITLE="ES: Glavni RSS feed" HREF="/rss.xml">
然后“href”元素将显示为/rss.xml,尽管“/ rss.xml”只是锚文本。点击Chrome浏览器页面源视图中的该链接,即可打开真实链接。
我想把那个href-s LINK,而不是锚文本。拜托,我怎么能用dom来做呢?
答案 0 :(得分:1)
获取link
元素并获取其href
属性。假设你使用的是id,
<link id="myLink" rel="alternate" href="/rss.xml" />
var link = document.getElementById("myLink");
link.href; // http://www.example.com/rss.xml
答案 1 :(得分:1)
“href”元素将显示为/rss.xml
是的,这是属性的值
虽然“/rss.xml”只是锚文本。
没有。 <link>
个元素没有锚文本。在以下示例中,“bar”是锚文本。
<a href="/rss.xml">bar</a>
点击Chrome浏览器页面源视图中的该链接,即可打开真实链接。
浏览器知道如何解析相对URI。
我想把那个href-s LINK,而不是锚文本。拜托,我怎么能用dom来做呢?
您无法使用DOM来解析URI。您使用DOM获取属性的值,然后使用其他内容将其解析为相对URI。
文章Using and interpreting relative URLs解释了它们的工作原理,并且有一些工具可以帮助解决它们。
您需要知道相对URI相对的基URI(通常是包含链接的文档的URI,但基本元素之类的东西可以将其丢弃)
在Perl中你可能会:
#!/usr/bin/perl
use strict;
use warnings;
use URI;
my $str = '/rss.xml';
my $base_uri = 'http://example.com/page/with/link/to/rss.xml';
print URI->new_abs( $str, $base_uri );
给出了:
http://example.com/rss.xml
答案 2 :(得分:0)
您可以尝试使用document.location.href
获取当前网址,并附加您从示例中获得的结果。这应该为您提供链接的绝对路径。