获取URL路径的部分

使用JavaScript从URL中提取路径的正确方法是什么?

例:
我有网址
http://www.somedomain.com/account/search?filter=a#top
但我只想获得这部分
/帐号/搜索

如果有什么可以利用的话,我正在使用jQuery。


内置的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  



更新,为任何网址使用相同的属性:

事实证明,这个模式正在被标准化为一个名为URLUtils的接口,并猜测是什么? 现有的window.location对象和锚点元素都实现了该接口。

因此,您可以对任何网址使用上述相同的属性 - 只需使用网址创建锚点并访问属性即可:

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示例进行测试。

JSFiddle示例

还有一个即将到来的URL对象,它将为URL本身提供这种支持,而不需要锚元素。 看起来目前没有稳定的浏览器支持它,但据说它会在Firefox 26中推出。当你认为你可能会支持它时,请在这里试试看。


window.location.href.split('/');

会给你一个包含所有URL部分的数组,你可以像普通数组一样访问它。

或@Dylan建议的更优雅的解决方案,只有路径部分:

window.location.pathname.split('/');

如果这是当前的 URL,请使用window.location.pathname,否则使用此正则表达式:

var reg = /.+?://.+?(/.+?)(?:#|?|$)/;
var pathname = reg.exec( 'http://www.somedomain.com/account/search?filter=a#top' )[1];
链接地址: http://www.djcxy.com/p/22547.html

上一篇: Get Portion of URL Path

下一篇: How to get current URL?