Как мне получить последний сегмент URL? У меня есть следующий скрипт, который отображает полный URL тега привязки нажал:
$(".tag_name_goes_here").live('click', function(event)
{
event.preventDefault();
alert($(this).attr("href"));
});
Если URL-адрес
http://mywebsite/folder/file
Как я могу получить только для отображения «файл» часть URL-адреса в окне предупреждения?
javascript
jquery
oshirowanen
источник
источник
Ответы:
Вы также можете использовать функцию lastIndexOf (), чтобы найти последнее вхождение
/
символа в вашем URL, затем функцию substring (), чтобы вернуть подстроку, начиная с этого местоположения:Таким образом, вы избежите создания массива, содержащего все ваши сегменты URL, как это
split()
происходит.источник
admin/store/tour/-1/
он будет''
строки?/
в конце?/
в конце:var url = window.location.href.replace(/\/$/, ''); /* remove optional end / */ var lastSeg = url.substr(url.lastIndexOf('/') + 1);
источник
http://mywebsite/folder/file/
"" == false
в этом случае она выталкивает часть массива с пустой строкойисточник
/
.console.log(history.location.pathname.split("/").pop())
Если есть лучший способ, я хотел бы знать! Надеюсь, этот комментарий может привести больше людей к вашему ответу. Благодаря @ Dblock247Просто еще одно решение с регулярным выражением.
источник
Javascript имеет функцию split, связанную со строковым объектом, которая может помочь вам:
источник
Другие ответы могут работать, если путь простой, состоящий только из простых элементов пути. Но когда он также содержит параметры запроса, они ломаются.
Для этого лучше использовать объект URL, чтобы получить более надежное решение. Это разобранная интерпретация настоящего URL:
Входные данные:
const href = 'https://stackoverflow.com/boo?q=foo&s=bar'
Вывод:
'boo'
Это работает для всех распространенных браузеров. Только наш умирающий IE не поддерживает это (и не будет). Тем не менее, для IE есть полифиллы (если вам все равно ).
источник
Или вы можете использовать регулярное выражение:
источник
alert(window.location.href.replace(/\/$/, '').replace(/.*//, ''))
источник
Я знаю, это слишком поздно, но для других: я настоятельно рекомендую использовать плагин PURL jquery . Мотивация для PURL заключается в том, что url может быть сегментирован тоже с помощью '#' (пример: angular.js links), то есть url может выглядеть так
или
И с PURL вы можете легко решить (сегмент / fsegment), какой сегмент вы хотите получить.
Для «классического» последнего сегмента вы могли бы написать:
источник
Основываясь на ответе Фредерика, используя только javascript:
источник
Также,
источник
Если вы не беспокоитесь о создании дополнительных элементов с использованием разбиения, тогда фильтр может решить проблему, о которой вы упомянули, в конце косой черты (при условии, что у вас есть поддержка фильтра в браузере).
источник
targetValue = один
Если ваш URL выглядит так:
или
или
Затем loc выглядит как: http://test.com/one
Теперь, так как вы хотите последний элемент, выполните следующий шаг, чтобы загрузить значение (targetValue), которое вы изначально хотели.
источник
search
илиhash
.Используйте нативное
pathname
свойство, потому что оно самое простое и уже проанализировано и разрешено браузером.$(this).attr("href")
может возвращать такие значения,../..
которые не дали бы вам правильный результат.Если вам нужно сохранить
search
иhash
(например,foo?bar#baz
отhttp://quux.com/path/to/foo?bar#baz
) использовать это:источник
pathname
раздвигает параметры запроса, ноhref
не делает.Чтобы получить последний сегмент вашего текущего окна:
window.location.href.substr(window.location.href.lastIndexOf('/') +1)
источник
вы можете сначала удалить, если есть / в конце, а затем получить последнюю часть URL
источник
Возвращает последний сегмент независимо от конечных слешей:
источник
path.sep
не буквальный слэш. См. Nodejs.org/api/path.html#path_path_sep . Это сделает ваш код переносимым между операционными системами.Скопировано из этого ответа
источник
Обновленный ответ raddevus:
Печатает последний путь URL в виде строки:
источник
Я считаю, что безопаснее удалить косую черту ('/') перед выполнением подстроки. Потому что я получил пустую строку в моем сценарии.
источник
Я использую регулярное выражение и разделить:
var last_path = location.href.match (/. / (. [\ w]) /) [1] .split ("#") [0] .split ("?") [0]
В конце концов, он будет игнорировать #? & / окончание URL, что часто случается. Пример:
https://cardsrealm.com/profile/cardsRealm -> Возвращает cardsRealm
https://cardsrealm.com/profile/cardsRealm#hello -> Возвращает cardsRealm
https://cardsrealm.com/profile/cardsRealm?hello -> Возвращает cardsRealm
https://cardsrealm.com/profile/cardsRealm/ -> Возвращает cardsRealm
источник
На самом деле я не знаю, является ли регулярное выражение правильным способом решения этой проблемы, поскольку оно может реально повлиять на эффективность вашего кода, но приведенное ниже регулярное выражение поможет вам получить последний сегмент и все равно даст последний сегмент, даже если URL-адрес сопровождается пустым
/
. Регулярное выражение, которое я придумал:источник
Работает для меня.
источник
Я знаю, что он старый, но если вы хотите получить это из URL, вы можете просто использовать:
document.location.pathname
получает путь от текущего URL.lastIndexOf
получить индекс последнего вхождения следующего регулярного выражения в нашем случае/.
. Точка означает любой символ, поэтому он не будет учитываться, если/
последний символ в URL.substring
разрезает строку между двумя индексами.источник
если URL
http://localhost/madukaonline/shop.php?shop=79
console.log(location.search);
принесу?shop=79
так что самый простой способ - это использовать location.search
вы можете посмотреть дополнительную информацию здесь и здесь
источник
Вы можете сделать это с помощью простых путей (w / 0) строк запросов и т. Д.
Разумеется, слишком сложный и, вероятно, не производительный, но я хотел использовать
reduce
для удовольствия.источник