我有:
var uri = window.location.href;
提供http://example.com/something#hash
不使用#hash
获取整个路径的最佳和最简单的方法是什么?
uri = http://example.com/something#hash
nohash = http://example.com/something
我试过使用location.origin+location.pathname
,但它并不适用于所有浏览器。我试过使用location.protocol+'//'+location.host+location.pathname
,它看起来像一个蹩脚的解决方案。
最好和最简单的方法是什么?也许我查询location.hash并尝试从uri中substr()this?
9条答案
按热度按时间1szpjjfi1#
taor4pac2#
vxqlmq5t3#
通用的方式也是较小的吗?
sigwle7e4#
较短的解决方案:
location.href.split(location.search||location.hash||/[?#]/)[0]
location.href.split(location.hash||"#")[0]
(我通常使用第一个)
ijxebb2r5#
ES2020:
o7jaxewo6#
我一直在寻找这个答案:
new9mtju7#
我是一个尽可能让本机代码完成繁重工作的粉丝。我开始认为浏览器可以比我们更好地识别URL的部分。这里有另一个变量供您考虑:
我想这需要一个小小的解释:我们正在构造一个URL对象,以当前URL为基础,使用一个空哈希值,即如果存在散列,则它被空散列替换。然后,我们从隐式转换字符串(URL对象的href)中删除最后一个字符('#')。
ni65a41a8#
k0pti3hp9#
如果您不关心端口号或查询字符串,则
location.protocol+'//'+location.host+location.pathname
是正确的语法如果你在乎:
https://developer.mozilla.org/en/DOM/window.location
或
你也可以只做一个
location.href.replace(location.hash,"")
它将删除从第一个#开始的所有内容,而不管字符串中的其他哈希字符
或者创建一个URL object: