Как получить значение #hash в URL-адресе в JS

Например, у меня есть 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.

NO jQuery Пожалуйста.

Спасибо за помощь заранее.

Ответ 1

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

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

Ответ 2

Как насчет

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

Это разделит хэш на hash= и примет значение после hash = и перед любым другим аргументом.

Ответ 3

Если вы выполняете обширные манипуляции с URL-адресами, вы можете проверить плагин URL JQuery.

Чтобы получить доступ к параметрам в хэшах URL-адреса

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

или если его текущий url

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

Надеюсь, что это поможет

Ответ 4

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

Ответ 5

Разделить на &, а затем на =:

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"]]