Есть свойство встроенного 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. Если вы думаете, что у вас может быть поддержка, попробуйте здесь .