如何修剪/剥离URL到页面名称?

时间:2010-07-09 13:36:52

标签: javascript jquery html

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

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

将成为:apage.html

有什么想法吗?

6 个答案:

答案 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>)元素,您可以获得一系列属性,为您提供网址的特定部分:protocolhostportpathnamesearchhash

您应该始终使用这些属性来提取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下测试,这是错误的,上面的代码现在可以正常工作: - )