2009-10-11 3 views
41

Я пытаюсь написать сценарий GreaseMonkey, в котором я хочу найти все ссылки, которые являются относительными ссылками. Мне показалось, что способ сделать это будет соответствовать содержимому href против /^https?:///.Как получить «сырое» содержимое href в JavaScript

Но я обнаружил, что, когда я обращаюсь к атрибуту href привязки, он всегда нормализуется или обрабатывается в форме, которая содержит «http». То есть, если HTML содержит:

<a id="rel" href="/relative/link">inner</a> 

доступа

document.getElementById("rel").href 

возвращает

http://example.com/relative/link 

Как я могу доступ к необработанным данным в HREF атрибута?

Альтернативно, есть ли лучший способ найти относительные ссылки?

+8

Вы пробовали элемент.getAttribute ("href")? –

+0

@ Ionut, почему бы вам не добавить это в качестве ответа? – James

+0

J-P, вопрос был немного неясным в начале. В то время, когда я опубликовал свой комментарий, неясно, пытался ли он использовать метод getAttribute или просто свойство 'href'. –

ответ

42

Попробуйте вместо этого getAttribute method.

+1

К сожалению, IE7, кажется, возвращает полный URL-адрес даже при таком подходе. –

24

Типичный. Я понял это почти сразу после публикации вопроса.

вместо:

anchor.href 

использование:

anchor.getAttribute("href") 

Конечно, это заняло у меня больше времени, чтобы набрать этот ответ, чем потребовалось всех остальных, чтобы ответить на него. (Черт, вы, люди, быстро.)

Смежные вопросы