Javascript 如何使用哈希提取域?

Javascript 如何使用哈希提取域?,javascript,jquery,Javascript,Jquery,我想从位置地址栏中提取一个没有长随机id的散列域,使其显示如下: http://test.example.com/#inbox 以下是完整的URL: http://test.example.com/#inbox/U2FsdGVkX19stSSdMXLZq5v7bOgzRLtaM7Lr1t+lWpI= 以下是我迄今为止所尝试的: var url = location.hash.split('#inbox')[1]; 我也试过: var url = $(location).attr("href

我想从位置地址栏中提取一个没有长随机id的散列域,使其显示如下:

http://test.example.com/#inbox
以下是完整的URL:

http://test.example.com/#inbox/U2FsdGVkX19stSSdMXLZq5v7bOgzRLtaM7Lr1t+lWpI=
以下是我迄今为止所尝试的:

var url = location.hash.split('#inbox')[1];
我也试过:

var url = $(location).attr("href").split('/')[2];
不幸的是,在没有长随机id的情况下,我没有得到想要提取的域和散列


当我尝试时,它会提取域名和没有随机id的散列,以获得URL的返回输出,如
http://test.example.com/#inbox

我得到了整个URL,找到了“#”所在的位置,在“#”的计数中加上了6个“#”+单词“收件箱”,并删除了URL的其余部分:

var url = document.URL;
var i = url.indexOf('#') + 6; // 6 is length of "#" + the word "inbox"
var answer = url.substr(0, i);

我得到了整个URL,找到了“#”所在的位置,在“#”的计数中加上了6个“#”+单词“收件箱”,并删除了URL的其余部分:

var url = document.URL;
var i = url.indexOf('#') + 6; // 6 is length of "#" + the word "inbox"
var answer = url.substr(0, i);
请尝试以下代码:

// Complete URL
var url = 'http://test.example.com/#inbox/U2FsdGVkX19stSSdMXLZq5v7bOgzRLtaM7Lr1t+lWpI=';

var desiredResult = url.match(/.*\/\#inbox\//)[0];
console.log(desiredResult.substring(0, desiredResult.length - 1)); // this will output 'http://test.example.com/#inbox'
请尝试以下代码:

// Complete URL
var url = 'http://test.example.com/#inbox/U2FsdGVkX19stSSdMXLZq5v7bOgzRLtaM7Lr1t+lWpI=';

var desiredResult = url.match(/.*\/\#inbox\//)[0];
console.log(desiredResult.substring(0, desiredResult.length - 1)); // this will output 'http://test.example.com/#inbox'
我将使用
indexOf()
查找
'#'
字符的位置。由于URL不能包含
“#”
,因此可以安全地假设第一个
“#”
将是您感兴趣的

然后我会搜索
'/'
,再次使用
indexOf()
,这样
'.#'
'/'
之间的单词可以改变,事情仍然按预期工作

该位置是
'/'
的位置,在此之前可以返回的任何内容都是
String.sub()
函数所做的,它返回您要查找的URL:

var pos = location.href.indexOf('#')
pos = location.href.indexOf('/', pos)
var url = location.href.substr(0, pos)
另一种方法,尽管我不确定它是否完全可移植,但使用如下位置字段:

var url = location.origin + location.pathname + "#inbox"
如果
“#收件箱”
部分可以更改,您可以调整代码或在
位置中搜索斜杠。散列如下所示:

var pos = location.hash.indexOf('/')
var url = location.origin + location.pathname + location.hash.sub(0, pos)
无论如何,任何一种方法都应该非常快(特别是因为您不需要循环使用这些方法)。

我将使用
indexOf()
来查找
“#”字符的位置。由于URL不能包含
“#”
,因此可以安全地假设第一个
“#”
将是您感兴趣的

然后我会搜索
'/'
,再次使用
indexOf()
,这样
'.#'
'/'
之间的单词可以改变,事情仍然按预期工作

该位置是
'/'
的位置,在此之前可以返回的任何内容都是
String.sub()
函数所做的,它返回您要查找的URL:

var pos = location.href.indexOf('#')
pos = location.href.indexOf('/', pos)
var url = location.href.substr(0, pos)
另一种方法,尽管我不确定它是否完全可移植,但使用如下位置字段:

var url = location.origin + location.pathname + "#inbox"
如果
“#收件箱”
部分可以更改,您可以调整代码或在
位置中搜索斜杠。散列如下所示:

var pos = location.hash.indexOf('/')
var url = location.origin + location.pathname + location.hash.sub(0, pos)

无论如何,任何一种方法都应该非常快(特别是因为您不需要循环使用这种方法)。

如果哈希始终只包含一个斜杠,并且您希望删除该斜杠之后的所有内容,则只需执行
location.href.slice(0,location.href.lastIndexOf('/'))
@FelixKling code将查找最后一个斜杠,然后保存它之前的所有内容。看起来您试图删除的是随机生成的代码,以防止缓存问题,因此它应该始终是URL的最后一部分。如果URL是包含id的完整链接,则使用URL.substr(0,URL.indexOf(“#”)+“#收件箱”等等,您到底想要什么?要检索此字符串或设置此新位置?如果哈希始终只包含一个斜杠,并且您希望删除该斜杠之后的所有内容,则只需执行
location.href.slice(0,location.href.lastIndexOf('/'))
@FelixKling code将查找最后一个斜杠,然后保存它之前的所有内容。看起来您试图删除的是随机生成的代码,以防止缓存问题,因此它应该始终是URL的最后一部分。如果URL是包含id的完整链接,则使用URL.substr(0,URL.indexOf(“#”)+“#收件箱”等等,您到底想要什么?检索此字符串或设置此新位置?示例中的
url
是什么?如果您想回来时查看,这里有一个讨论。示例中的
url
是什么?如果您想回来时查看,这里有一个讨论。