Есть свойство встроенного window.location
объекта, которое предоставит это для текущего окна.
// If URL is http://www.somedomain.com/account/search?filter=a#top
window.location.pathname // /account/search
// For reference:
window.location.host // www.somedomain.com (includes port if there is one)
window.location.hostname // www.somedomain.com
window.location.hash // #top
window.location.href // http://www.somedomain.com/account/search?filter=a#top
window.location.port // (empty string)
window.location.protocol // http:
window.location.search // ?filter=a
Обновите, используйте те же свойства для любого URL:
Оказывается, эта схема стандартизирована как интерфейс под названием URLUtils , и угадайте, что? И существующий window.location
объект и якорные элементы реализуют интерфейс.
Таким образом, вы можете использовать те же свойства выше для любого URL - просто создайте привязку с URL и получите доступ к свойствам:
var el = document.createElement('a');
el.href = "http://www.somedomain.com/account/search?filter=a#top";
el.host // www.somedomain.com (includes port if there is one[1])
el.hostname // www.somedomain.com
el.hash // #top
el.href // http://www.somedomain.com/account/search?filter=a#top
el.pathname // /account/search
el.port // (port if there is one[1])
el.protocol // http:
el.search // ?filter=a
[1]: Поддержка браузером свойств, включающих порт, не согласована, см .: http://jessepollak.me/chrome-was-wrong-ie-was-right
Это работает в последних версиях Chrome и Firefox . У меня нет версий Internet Explorer для тестирования, поэтому, пожалуйста, проверьте себя на примере JSFiddle.
Также есть URL
объект, который будет предлагать эту поддержку для самих URL, без элемента привязки. Похоже, что в настоящее время стабильные браузеры его не поддерживают, но говорят, что он появится в Firefox 26. Если вы думаете, что у вас может быть поддержка, попробуйте здесь .
Даст вам массив, содержащий все части URL, к которым вы можете обращаться, как обычный массив.
Или еще более элегантное решение, предложенное @Dylan, только с частями пути:
источник
Если это текущий URL, используйте window.location.pathname, в противном случае используйте это регулярное выражение:
источник
/.+?\:\/\/.+?(\/.+?)?(?:#|\?|)?$/
Существует полезный метод веб-API, который называется URL.
источник
Если вы хотите получить части URL, которые вы сохранили в переменной, я могу порекомендовать URL-Parse
Согласно документации, он извлекает следующие части:
источник
Если у вас есть абстрактная строка URL (не из текущей
window.location
), вы можете использовать этот трюк:Благодаря джлонг
источник