如何获取 url 的最后一段?我有以下脚本显示单击的锚标记的完整 url:
$(".tag_name_goes_here").live('click', function(event)
{
event.preventDefault();
alert($(this).attr("href"));
});
如果网址是
http://mywebsite/folder/file
我如何才能让它在警告框中显示 url 的“文件”部分?
如何获取 url 的最后一段?我有以下脚本显示单击的锚标记的完整 url:
$(".tag_name_goes_here").live('click', function(event)
{
event.preventDefault();
alert($(this).attr("href"));
});
如果网址是
http://mywebsite/folder/file
我如何才能让它在警告框中显示 url 的“文件”部分?
您还可以使用lastIndexOf()函数定位/
URL 中最后一次出现的字符,然后使用substring()函数返回从该位置开始的子字符串:
console.log(this.href.substring(this.href.lastIndexOf('/') + 1));
这样,您将避免创建一个包含所有 URL 段的数组,就像split()
这样。
var parts = 'http://mywebsite/folder/file'.split('/');
var lastSegment = parts.pop() || parts.pop(); // handle potential trailing slash
console.log(lastSegment);
window.location.pathname.split("/").pop()
正则表达式的另一种解决方案。
var href = location.href;
console.log(href.match(/([^\/]*)\/*$/)[1]);
如果路径很简单,仅由简单的路径元素组成,则其他答案可能有效。但是当它也包含查询参数时,它们就会中断。
最好为此使用URL对象,以获得更强大的解决方案。它是对当前 URL 的解析解释:
输入:
const href = 'https://stackoverflow.com/boo?q=foo&s=bar'
const segments = new URL(href).pathname.split('/');
const last = segments.pop() || segments.pop(); // Handle potential trailing slash
console.log(last);
输出: 'boo'
这适用于所有常见的浏览器。只有我们垂死的IE 不支持(并且不会)。不过,对于 IE,有一个polyfills可用(如果你在乎的话)。