我想从位置地址栏中提取没有哈希值且没有长随机ID的域,使其显示如下:
http://test.example.com/#inbox
这是完整的网址:
http://test.example.com/#inbox/U2FsdGVkX19stSSdMXLZq5v7bOgzRLtaM7Lr1t+lWpI=
这是我到目前为止尝试过的:
var url = location.hash.split('#inbox')[1];
我也尝试过这个:
var url = $(location).attr("href").split('/')[2];
不幸的是,没有长的随机ID,我没有得到我想要提取的域和哈希值。
尝试时,它会提取域名和哈希(不带随机ID)以获取http://test.example.com/#inbox
之类的URL的返回输出。
答案 0 :(得分:2)
我将使用indexOf()
查找'#'
字符的位置。由于该网址不能包含'#'
,因此可以安全地假设第一个'#'
将是您感兴趣的那个网址。
然后,我将再次搜索'/'
来搜索indexOf()
,这样'#'
和'/'
之间的单词可以更改,并且一切仍按预期运行。 / p>
该位置是'/'
的位置,并且可以返回之前的任何内容,这就是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"
如果"#inbox"
部分可以更改,则可以像下面这样调整代码或在location.hash
中搜索斜线:
var pos = location.hash.indexOf('/')
var url = location.origin + location.pathname + location.hash.sub(0, pos)
无论哪种方法,无论哪种方法都应该足够快(特别是因为您不需要循环访问此类方法)。
答案 1 :(得分:0)
我得到了整个URL,找到了“#”所在的位置,在其“#” +单词“ inbox”的计数中添加了6,并删除了URL的其余部分:
nav ul li.linav:nth-child(1) a:before
答案 2 :(得分:-2)
尝试以下代码:
// 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'