在JavaScript中从href获取路径名

13

什么是从锚点的href属性返回"pathname"的最简单方法?

例如......假设我有以下代码:

<a href="http://www.example.com/this/is/my/path.html">Blah</a>
我需要返回仅为"/this/is/my/path.html"这部分。
有什么想法吗?我正在使用jQuery,如果有帮助的话..
谢谢!

2
请参见以下链接:如何在JavaScript中将URL解析为主机名和路径? - Matthew Flaschen
3个回答

31

我认为你可以使用pathname

$('a')[0].pathname;

是的,就是这么简单。http://www.devguru.com/technologies/ecmascript/quickref/location_pathname.html - Samuel Sjöberg
7
可能需要注意的是:我发现IE会在没有前导斜杠的情况下给出这个路径,而其他浏览器不会?请参见https://dev59.com/F3NA5IYBdhLWcg3wcdhk和http://blogs.msdn.com/b/ieinternals/archive/2011/02/28/internet-explorer-window-location-pathname-missing-slash-and-host-has-port.aspx。 - Funka
@SamuelSjöberg:链接失效。 - rvighne

6

请点击这里查看工作示例:http://jsfiddle.net/TvNmL/

HTML..

<a id='lnk' href="http://www.example.com/this/is/my/path.html">Blah</a>

javascript...

alert( document.getElementById('lnk').pathname);

请参见此页面上关于IE的异常情况的其他答案中的评论,该浏览器在路径中不返回前导/初始斜杠,而其他所有浏览器都会这样做(包括FF、Chrome、Safari和Opera)。这里提供的JsFiddle非常有帮助,可以在所有不同的浏览器中打开并测试此问题。 - Funka

2
我注意到还没有任何适当的答案来解决@Funka提到的IE bug问题,因此这是我的解决方案:
HTML
<a href="/foo" id="foo">My link</a>

JS

document.getElementById("foo").getAttribute("href");

在所有浏览器上都能够显示“/foo”的结果。


2
当存在查询参数或锚点(/foo#bar)时,hrefpathname 不同。 - Coderer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接