我如何将URL修剪/剥离到页面名称...
所以:http://www.BurtReynoldsMustache.com/whatever/whoever/apage.html
将成为:apage.html
有什么想法吗?
答案 0 :(得分:11)
你不需要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);
好的,如果位置对象可用,请使用pathname提供更好的结果,如下所示,但是,url可以是字符串或直接来自文本字段或span / label的内容。所以上面的解决方案应该有它的位置。
答案 1 :(得分:10)
通过页面上的location
和任何链接(<a>
)元素,您可以获得一系列属性,为您提供网址的特定部分:protocol
,host
,port
,pathname
,search
和hash
。
您应该始终使用这些属性来提取URL的部分内容,而不是使用href
进行黑客攻击,并且可能会在角落情况下出错。例如,如果存在?query
或#fragment
,则此处发布的每个解决方案都将失败。 Rob和digitalFresh的答案试图处理它们,但如果查询字符串或片段中存在/
字符(有效),它仍然会失败。
相反,只需:
var pagename= location.pathname.split('/').pop();
答案 2 :(得分:4)
这里的大多数解决方案都没有利用window.location对象。 location对象有一个名为pathname的奇妙东西,它只返回路径,没有查询字符串,主机,协议,哈希等。
var mypage = window.location.pathname.split("/").pop();
答案 3 :(得分:1)
你可以这样做:
document.location.href.split('/').pop();
编辑:你可能想要删除查询字符串,如果还有一个:
document.location.href.split('/').pop().split('?').shift();
编辑2:如果有一个
,这也会忽略网址中的锚点document.location.href.split('/').pop().split(/\?|#/).shift();
答案 4 :(得分:0)
这也应该排除查询和哈希值。
var path = location.href;
path = path.substring(path.lastIndexOf("/") + 1);
path = path.split("?")[0].split("#")[0];
console.debug(path);
答案 5 :(得分:-1)
没有经过如此完全猜测的测试,但我确信这样的事情会发生: - )
var url = 'http://www.BurtReynoldsMustache.com/whatever/whoever/apage.html';
var page = url.split('/');
alert(page[page.length-1]);
编辑在jsfiddle下测试,这是错误的,上面的代码现在可以正常工作: - )