如何在JS中的URL中获取#hash值

时间:2012-08-12 08:08:28

标签: javascript url

例如,我的网址为:

  

http://www.google.com/#hash=value2x

我希望js代码只返回value2x。 我尝试了location.hash.split('=')[1],但这会导致第一个哈希值,如果url是

  

http://www.google.com/#hfh=fdg&hash=value2x

返回fdg&hash。 我只想要hash的价值。

没有jQuery请。

感谢您的帮助。

6 个答案:

答案 0 :(得分:39)

function getHashValue(key) {
  var matches = location.hash.match(new RegExp(key+'=([^&]*)'));
  return matches ? matches[1] : null;
}

// usage
var hash = getHashValue('hash');

答案 1 :(得分:4)

怎么样

location.hash.split('hash=')[1].split('&')[0]

这将在hash=处拆分哈希值,并在哈希=之后和任何其他参数之前取值。

答案 2 :(得分:2)

如果您正在进行广泛的网址操作,那么您应该查看JQuery URL plugin

访问url哈希中的参数

    $.url('http://www.google.com/#hfh=fdg&hash=value2x').fparam('hash');

或者当前的网址

    $.url().fparam('hash');

希望有所帮助

答案 3 :(得分:2)

location.parseHash = function(){
   var hash = (this.hash ||'').replace(/^#/,'').split('&'),
       parsed = {};

   for(var i =0,el;i<hash.length; i++ ){
        el=hash[i].split('=')
        parsed[el[0]] = el[1];
   }
   return parsed;
};

var obj= location.parseHash();
    obj.hash;  //fdg 
    obj.hfh;   //value2x

答案 4 :(得分:2)

URLSearchParams类可用于此目的。

var urlParams = new URLSearchParams(window.location.hash.replace("#","?"));
var hash = urlParams.get('hash');

答案 5 :(得分:1)

分为&,然后分配在=

pairs = location.hash.substr(1).split('&').map(function(pair) {
    var kv = pair.split('=', 2);
    return [decodeURIComponent(kv[0]), kv.length === 2 ? decodeURIComponent(kv[1]) : null];
})

此处pairs将是一个数组数组,其键位于0,值为1

[["hfh","fdg"],["hash","value2x"]]