Javascript 如何将URL裁剪/剥离到页面名称?

Javascript 如何将URL裁剪/剥离到页面名称?,javascript,jquery,html,Javascript,Jquery,Html,我如何将URL裁剪/剥离到页面名称 所以:http://www.BurtReynoldsMustache.com/whatever/whoever/apage.html 将变成:apage.html 有什么想法吗?还没有测试过这么全面的猜测,但我相信这样的东西可以:-) 编辑在下测试,结果错误,上面的代码现在应该可以工作:-)您不需要jquery: var url = window.location.href; var page = url.substring(url.lastIndexOf('

我如何将URL裁剪/剥离到页面名称

所以:
http://www.BurtReynoldsMustache.com/whatever/whoever/apage.html

将变成:
apage.html


有什么想法吗?

还没有测试过这么全面的猜测,但我相信这样的东西可以:-)


编辑在下测试,结果错误,上面的代码现在应该可以工作:-)

您不需要jquery:

var url = window.location.href;
var page = url.substring(url.lastIndexOf('/') + 1);
编辑:可能的查询字符串的一个好点:

// it might be from browser & / anywhere else
var url = window.location.href;
url = url.split('#').pop().split('?').pop();
var page = url.substring(url.lastIndexOf('/') + 1);

好的,如果location对象可用,那么使用pathname可以获得更好的结果,如下所示,但是,url可以是字符串或直接来自文本字段或span/label的内容。因此,上述解决方案应占有一席之地。

您可以这样做:

document.location.href.split('/').pop();
编辑:如果还有一个查询字符串,则可能需要删除该字符串:

document.location.href.split('/').pop().split('?').shift();
编辑2:如果url中有锚,这也将忽略锚

document.location.href.split('/').pop().split(/\?|#/).shift();

这也应该排除查询和散列值

var path = location.href;
path = path.substring(path.lastIndexOf("/") + 1);
path = path.split("?")[0].split("#")[0];
console.debug(path);

使用页面上的
location
和任何链接(
)元素,您将获得一系列属性,这些属性为您提供URL的特定部分:
协议
主机
端口
路径名
搜索
哈希

您应该始终使用这些属性来提取URL的某些部分,而不是使用
href
进行黑客攻击,并且可能会在某些情况下出错。例如,如果存在
?查询
#片段
,则此处发布的每个解决方案都将失败。Rob和digitalFresh的回答试图处理这些问题,但如果查询字符串或片段(有效)中存在
/
字符,则仍然会失败

相反,只需:

var pagename= location.pathname.split('/').pop();

这里的大多数解决方案都没有利用window.location对象。location对象有一个奇妙的东西叫做pathname,它只返回路径,不返回查询字符串、主机、协议、哈希等

var mypage = window.location.pathname.split("/").pop();

这也是个不错的主意,但是。。。数组索引是从零开始的。哈希和查询字符串失败这很好,解决方案不需要jQuery,因为jQuery是一个已知的事实。是的,cheers Markrobinson哈希和查询字符串失败这很好,在这种情况下不需要它-投票支持他:(当其他人在搜索网站时找到此解决方案时,答案并不好。这将对其他人失败。这是错误的。下面来自@bobince和@epascarello的答案是正确的。使用location.pathname。这就是它的用途。只想说我在稍微不同的上下文中使用了你的答案。我创建了一个工具,允许我们我的JS使用jQuery解析html,但我需要一种方法来提取所有的图像名称,以查看是否必须替换文件名(各种原因,主要是由于其他功能)。我发现在编写代码之前执行以下操作更有用:
.replace('url(','').replace(“)”,“)
谢谢您的回答!
var mypage = window.location.pathname.split("/").pop();