从当前URL中获取 #id

5
我正在寻找一种使用JavaScript获取当前URL中#锚点的方法。例如:

http://my-page.com/index.html#contact-us

将返回 contact-us
我可以在URI处拆分并选择最后一部分,但我正在寻找更好和更干净的建议。原生(jQuery?)函数很好,但我想我要求太多了。
3个回答

12

使用location.hash

location.hash.slice(1);

这个字符串以#开头,因此要用 .slice(1)。对于任意的字符串,你可以创建一个 <a> 元素并设置 href 属性来使用内置的 URL 解析功能,然后读取其他属性,例如 protocolhostnamehash 等。 jQuery 示例:

$('a').attr('href', url)[0].hash;

2
spliceslice都不是String.prototype的一部分。但是,location.hash.substr(1)可以解决问题。 - lonesomeday
@lonesomeday 谢谢,代码中有个打字错误。解释中使用了正确的字符。编辑:在MDN上查看String.prototype.slice - Rob W
1
“slice” 当然是 “String.prototype” 的一部分。对于我的愚蠢我表示歉意。 - lonesomeday
1
@lonesomeday:具有讽刺意味的是,substr() 本身(与 slice() 不同)是非标准的。 - Tim Down

2

location.hash.replace(/^#/, "")


1

如果您使用变量:

var url = "http://my-page.com/index.html#contact-us";

var hash = url.substring(url.indexOf("#") + 1);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接