Javascript 如何使用哈希提取域?
我想从位置地址栏中提取一个没有长随机id的散列域,使其显示如下: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
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
是什么?如果您想回来时查看,这里有一个讨论。