JavaScript - 获取 URL 路径的一部分

新手上路,请多包涵

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

例子:

我有网址

http://www.somedomain.com/account/search?filter=a#top

但我只想得到这部分

/帐户/搜索

如果有任何可以利用的东西,我正在使用 jQuery。

原文由 BuddyJoe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 492
2 个回答

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

JSFiddle 示例

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

原文由 Nicole 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

将为您提供一个包含所有 URL 部分的数组,您可以像普通数组一样访问它。

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

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

原文由 Jose Faeti 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题