Вопрос по anchor, relative-url, href, javascript – Как получить «сырое» href-содержимое в JavaScript

53

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

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

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

доступа

document.getElementById("rel").href

возвращается

http://example.com/relative/link

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

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

@ Понятно, почему ты не добавил это как ответ? James
J-P, вопрос был немного неясным в начале. На момент публикации моего комментария не было ясно, пытался ли он использоватьgetAttribute метод или простоhref свойство. Ionuț G. Stan
Да, я избавился от кода. Извини, Айонут. wfaulk
Вы пробовали element.getAttribute ("href")? Ionuț G. Stan

Ваш Ответ

2   ответа
55

getAttribute метод вместо.

К сожалению, IE7, похоже, возвращает полный URL-адрес даже при таком подходе. Jørn Schou-Rode
34

вместо:

anchor.href

использовать:

anchor.getAttribute("href")

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

Похожие вопросы