7

我需要使用 javascript 显示 URL 的最后一部分!

我正在使用此代码,但这将显示整个 URL:

<script language="javascript">

document.writeln(document.location);
var url = $(this).attr("href");
var part = url.substring(url.lastIndexOf('/') + 1);

</script>

如果 URL 如下所示:

domain.com/something/file

我只需要显示“文件”。

4

4 回答 4

14

之所以document.write(window.location)写位置,是因为 的toString方法window.location,真正返回window.location.href

// This will fallback to the location.pathname if this
// is not the location already or not an anchor.
var path = this.pathname || window.location.pathname;
var part = path.split('/').pop();

路径名是域名之后的所有内容。所以,http://example.com/something/file分解如下:

  1. 协议:http:
  2. 主机名:example.com
  3. 路径名:something/file
  4. 参考资料:http://example.com/something/file

(还有端口、搜索(?this=that)和哈希(#hash),在这种情况下都是空的)

something/file所以,我将split它放入一个数组中,只要这是 a /,这将是["something", "file"]

之后,我pop将关闭数组的最后一部分,在本例中为“文件”


两者window.location和任何<a>标签都具有这些属性。因此,如果您需要解析 URL,您可以在 javascript 中执行以下操作:

var anchor = document.createElement('a');
anchor.href = '/about'; // this could be any relative or absolute url

如果您需要,现在anchor将拥有所有这些属性。不需要正则表达式或任何东西。


更新

在较新的浏览器中(不包括 IE,除非您使用url-polyfill),您可以使用URL而不是<a />这样:

const url = new URL('/about', this.location)
// or if you don't care about the host, you can do the following
// const url = new URL('http://localhost/about')

这包含所有其他信息,加上url.searchParams,因此您也不必自己解析搜索字符串。

于 2013-08-12T19:16:29.653 回答
8
<script type="text/javascript">

var segment_str = window.location.pathname; // return segment1/segment2/segment3/segment4
var segment_array = segment_str.split( '/' );
var last_segment = segment_array.pop();
document.write(last_segment); // alerts segment4

</script>

JsFiddle:http: //jsfiddle.net/HNMV3/1/

于 2013-08-12T19:15:15.183 回答
1
var pathname = window.location.pathname,
    part = pathname.substr(pathname.lastIndexOf('/') + 1);
于 2013-08-12T19:17:42.593 回答
0

replace(/-/g," ") 和 split(".html") 将从 url 中删除 "hyphens" 和 ".html",因此只保留路径名

var parts=window.location.pathname.split("/");
var query=parts[parts.length-1].split(".html");
query[0]=query[0].replace(/-/g," ");
document.write(query[0])
于 2015-01-03T15:03:20.457 回答