如何使用散列提取域?

我想从位置地址栏中提取不带长随机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


Cats萌萌
浏览 142回答 3
3回答

MM们

我得到了整个URL,找到了“#”的位置,在其“#” +单词“ inbox”的计数中添加了6,并删除了URL的其余部分:var url = document.URL;var i = url.indexOf('#') + 6; // 6 is length of "#" + the word "inbox"var answer = url.substr(0, i);

繁星coding

我会用它indexOf()来找到'#'角色的位置。由于网址不能包含'#',因此可以安全地假设第一个'#'将是您感兴趣的网址。然后,我将'/'再次搜索与indexOf(),所以the'#'和the之间的单词'/'可以更改,并且一切仍然按预期进行。该位置是'/'以及可以返回的所有内容的位置,这是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)无论哪种方法都应该足够快(特别是因为您不需要循环这样的方法)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript