javascript窗口位置href没有哈希值?

pxyaymoc  于 2023-06-20  发布在  Java
关注(0)|答案(9)|浏览(170)

我有:

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?

1szpjjfi

1szpjjfi1#

var uri = window.location.href.split("#")[0];

// Returns http://example.com/something

var hash = window.location.hash;

// Returns #hash
taor4pac

taor4pac2#

location.href.replace(location.hash,"")
vxqlmq5t

vxqlmq5t3#

通用的方式也是较小的吗?

location.href.split(/\?|#/)[0]
sigwle7e

sigwle7e4#

较短的解决方案:

  • 没有查询字符串和哈希location.href.split(location.search||location.hash||/[?#]/)[0]
  • 仅无哈希location.href.split(location.hash||"#")[0]

(我通常使用第一个)

ijxebb2r

ijxebb2r5#

ES2020:

let [uri, hash] = location.href.split("#");
console.log(uri, hash);

location.hash = "#myhash";

[uri, hash] = location.href.split("#");
console.log(uri, hash);
o7jaxewo

o7jaxewo6#

我一直在寻找这个答案:

`${window.location.origin}${window.location.pathname}${window.location.search}`
new9mtju

new9mtju7#

我是一个尽可能让本机代码完成繁重工作的粉丝。我开始认为浏览器可以比我们更好地识别URL的部分。这里有另一个变量供您考虑:

new URL('#', location.href).slice(0, -1)

我想这需要一个小小的解释:我们正在构造一个URL对象,以当前URL为基础,使用一个空哈希值,即如果存在散列,则它被空散列替换。然后,我们从隐式转换字符串(URL对象的href)中删除最后一个字符('#')。

ni65a41a

ni65a41a8#

location.href = window.location.href.split("write here your code to delete in your URL")[0] + "write here your final destination";
k0pti3hp

k0pti3hp9#

如果您不关心端口号或查询字符串,则location.protocol+'//'+location.host+location.pathname是正确的语法
如果你在乎:
https://developer.mozilla.org/en/DOM/window.location

location.protocol+'//'+
  location.host+
  location.pathname+
 (location.search?location.search:"")

location.protocol+'//'+
  location.hostname+
 (location.port?":"+location.port:"")+
  location.pathname+
 (location.search?location.search:"")

你也可以只做一个location.href.replace(location.hash,"")
它将删除从第一个#开始的所有内容,而不管字符串中的其他哈希字符
或者创建一个URL object

const url = new URL("https://www.somepage.com/page.hmtl#anchor") //(location.href);
console.log(url)
url.hash="";
console.log(url)

相关问题