Вопрос

Я создаю библиотеку JS, которая требует просмотра значений form[action] и a[href] и разрешения их в абсолютные URL-адреса.

Например, я нахожусь http://a/b/c/d;p?q и встретим значение href «../g» (предположим, что элемента <base> нет).В результате абсолют будет: http://а/б/г.

Есть ли библиотека JS, которая уже делает это?Мне придется в это поверить.

Для получения дополнительной информации о том, что необходимо, спецификация:http://tools.ietf.org/html/rfc3986#section-5.4

Это было полезно?

Решение

Оказывается, .href атрибут элемента A (не .getAttribute('href'), но .href) возвращает разрешенный (абсолютный) URL-адрес.

Другие советы

В современных браузерах это решает встроенный конструктор URL:

u = (new URL("?newSearch",
             "http://a.example/with/a/long/path.file?search#fragment")).href

(даёт http://a.example/with/a/long/path.file?newSearch)

Если вы хотите, чтобы база относилась к текущему документу, вы можете сделать это явно:

u = (new URL("?newSearch", document.location)).href

А URL Объект также предоставляет вам доступ ко всем компонентам URL-адреса (протокол, хост, путь, поиск, хэш и т. д.).

Хорошее решение на чистом JS, которое работает без DOM: https://gist.github.com/1088850 (работает везде, но особенно полезно для серверного JS).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top