Я хотел бы взять строку
var a = "http://example.com/aa/bb/"
и обработать его в объект, так что
a.hostname == "example.com"
а также
a.pathname == "/aa/bb"
javascript
url
freddiefujiwara
источник
источник
hostname
иpathname
непосредственно кlocation
объекту.Ответы:
Современный способ:
Возвращает объект со свойствами
hostname
иpathname
, вместе с несколькими другими .Первый аргумент - это относительный или абсолютный URL; если он относительный, то вам нужно указать второй аргумент (базовый URL). Например, для URL относительно текущей страницы:
В дополнение к браузерам этот API также доступен в Node.js начиная с v7, через
require('url').URL
.источник
new URL('/stuff?foo=bar#baz')
->SyntaxError: Failed to construct 'URL': Invalid URL
источник
pathname
удаляет косую черту, в то время как другие браузеры этого не делают. Таким образом, вы будете в конечном итоге с/path
илиpath
, в зависимости от вашего браузера.найти здесь: https://gist.github.com/jlong/2428561
источник
parser = location;
и все следующие строки работают. Пробовал в Chrome и IE9 только сейчас.pathname
в IE отсутствует косая черта. Пойди разберись. : Dhttp:
даже если вы перейдете простоdomain.com
к href (без какого-либо протокола). Я хотел использовать это, чтобы проверить, отсутствует ли протокол, и если да, то я мог бы добавить его, но он предполагает http: поэтому не смог использовать его для этой цели.Вот простая функция, использующая регулярное выражение, имитирующее
a
поведение тега.Pros
Cons
-
-
РЕДАКТИРОВАТЬ:
Вот разбивка регулярного выражения
источник
возвращает currentUrl.
Если вы хотите передать свою собственную строку как URL ( не работает в IE11 ):
Тогда вы можете разобрать это как:
источник
Ответ freddiefujiwara довольно хороший, но мне также нужно было поддерживать относительные URL в Internet Explorer. Я придумал следующее решение:
Теперь используйте его, чтобы получить необходимые свойства:
Пример JSFiddle: http://jsfiddle.net/6AEAB/
источник
var locationHost = (location.port !== '80' && location.port !== '443') ? location.host : location.hostname;
var locationOrigin = location.protocol + '//' + locationHost;
js-uri (доступно в Google Code) берет строковый URL-адрес и разрешает из него объект URI:
источник
Как насчет простого регулярного выражения?
источник
//user:password@example.com/path/x?y=z
и вы поймете, почему простое регулярное выражение не обрезает это. Теперь добавьте к нему что-то недопустимое, и оно также должно выручить предсказуемым образом.Сегодня я столкнулся с этой проблемой и обнаружил: URL - MDN Web API
Это возвращение:
Надеюсь, мой первый вклад поможет вам!
источник
Вот версия, которую я скопировал с https://gist.github.com/1847816 , но переписал, чтобы ее было легче читать и отлаживать. Цель копирования данных привязки в другую переменную с именем «result» состоит в том, что данные привязки являются довольно длинными, и поэтому копирование ограниченного числа значений в результат поможет упростить результат.
источник
Кросс-браузерный разбор URL , обходит проблему относительного пути для IE 6, 7, 8 и 9:
Использование ( демо JSFiddle здесь ):
Результат:
источник
Для тех, кто ищет современное решение, которое работает в IE, Firefox и Chrome:
Ни одно из этих решений, использующих элемент гиперссылки, не будет работать так же в Chrome.Если вы передадите неверный (или пустой) URL-адрес chrome, он всегда будет возвращать хост, с которого вызывается скрипт. Таким образом, в IE вы получите пустой, в то время как в Chrome вы получите localhost (или любой другой).
Если вы пытаетесь посмотреть на реферера, это обман. Вы хотите убедиться, что хост, который вы получаете, был в исходном URL, чтобы справиться с этим:
источник
Путь AngularJS - возитесь здесь: http://jsfiddle.net/PT5BG/4/
источник
$document
и$window
услугиПростое и надежное решение с использованием шаблона модуля. Это включает исправление для IE, где
pathname
не всегда есть начальная косая черта (/
).Я создал Gist вместе с JSFiddle, который предлагает более динамический анализатор. Я рекомендую вам проверить это и оставить отзыв.
демонстрация
Показать фрагмент кода
Вывод
источник
Используйте https://www.npmjs.com/package/uri-parse-lib для этого
источник
Почему бы не использовать его?
источник
Вы также можете использовать
parse_url()
функцию из Locutus проекта (бывший php.js).Код:
Результат:
источник
Работает как с абсолютными, так и с относительными URL
источник
abc://username:password@example.com:123/path/data?key=value&key2=value2#fragid1
Прекратите изобретать велосипед. Используйте https://github.com/medialize/URI.js/
источник
Просто используйте библиотеку url.js (для web и node.js).
https://github.com/websanova/js-url
источник
простой взлом с первым ответом
это может использоваться даже без аргумента, чтобы выяснить текущее имя хоста getLocation (). имя хоста даст текущее имя хоста
источник