Проблема DOM при попытке извлечь HREF - PullRequest
1 голос
/ 19 января 2011

Я использовал DOM для извлечения всех HREF-ов из данного источника HTML. Но есть проблема: если у меня есть такая ссылка:

<LINK rel="alternate" TYPE="application/rss+xml" TITLE="ES: Glavni RSS feed" HREF="/rss.xml">

тогда элемент "href" будет представлен как /rss.xml, хотя этот "/rss.xml" является просто якорным текстом. При нажатии на эту ссылку в исходном представлении Chrome открывается реальная ссылка.

Я бы хотел взять эту ССЫЛКУ href-s, а не привязывать текст. Пожалуйста, как я могу сделать это с домом?

Ответы [ 3 ]

1 голос
/ 16 апреля 2011

Возьмите элемент link и получите его свойство href. Предположим, вы использовали идентификатор,

<link id="myLink" rel="alternate" href="/rss.xml" />

var link = document.getElementById("myLink");
link.href; // http://www.example.com/rss.xml
1 голос
/ 16 апреля 2011

Элемент «href» будет представлен как /rss.xml

Да, это значение атрибута

хотя этот "/rss.xml" является просто якорным текстом.

Нет. <link> элементы не имеют якорного текста. В следующем примере 'bar' является текстом привязки.

<a href="/rss.xml">bar</a>

При нажатии на эту ссылку в режиме просмотра исходного кода Chrome открывается реальная ссылка.

Браузеры знают, как разрешать относительные URI.

Я бы хотел взять эту ССЫЛКУ href-s, а не привязывать текст. Пожалуйста, как я могу сделать это с домом?

Вы не можете использовать DOM для разрешения URI. Вы используете DOM, чтобы получить значение атрибута, а затем используете что-то другое, чтобы разрешить его как относительный URI.

Статья Использование и интерпретация относительных URL-адресов объясняет, как они работают, и есть инструменты, которые могут помочь их разрешить.

Вам необходимо знать базовый 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
0 голосов
/ 16 апреля 2011

Вы можете попробовать использовать document.location.href, чтобы получить текущий URL и добавить результат, который вы получаете из вашего примера.Это должно дать вам абсолютный путь для ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...