Как получить идентификатор фрагмента (значение после хеш-кода) из URL?


212

Пример:

www.site.com/index.php#hello

Используя jQuery, я хочу поместить значение helloв переменную:

var type = 

Я не уверен, должен ли этот вопрос оставаться помеченным как jQuery и спрашивать об этом. Большинство ответов применимы к JS без jQuery, и это похоже на хорошую цель.
user4642212

Ответы:


585

Нет необходимости в jQuery

var type = window.location.hash.substr(1);

154
Не хватает jQuery! (Шучу: +1.)
nnnnnn

2
Я только что узнал, что # можно использовать как «хэш», который работает как идентификатор / ключевое слово в JavaScript. Круто
Клин Дсилва

13
Вы также можете использовать .slice(1)вместо .substr(1)которого должно предлагать умеренное увеличение производительности, хотя в реальной жизни это не имеет значения.
Деви

3
О боже, сколько раз вам нужно было проверять хеш URL, чтобы иметь ЛЮБУЮ заметную разницу? Миллион? «Скромное увеличение» в этом контексте является огромным преувеличением. :-)
Конрад

37

Вы можете сделать это, используя следующий код:

var url = "www.site.com/index.php#hello";
var hash = url.substring(url.indexOf('#')+1);
alert(hash);

СМОТРЕТЬ ДЕМО


4
Примечание: indexOf не поддерживается IE8
Себастьян Ордельман

4
@SchalkKeun, к счастью, сейчас в 18 году его почти нет. Но те, кому еще предстоит разобраться с этой легендой, должны об этом знать.
Себастьян Ордельман

6
Честно говоря, IE8 настолько небезопасен, что все платежные шлюзы в основном будут отбрасывать любой браузер, не поддерживающий TLS 1.2, на следующей неделе (30 июня 2018 года), и вы вообще не сможете совершать платежи из них. Так что все эти старые дрянные браузеры бесполезны для любого клиента электронной коммерции.
Шальк Кеун

13
var url ='www.site.com/index.php#hello';
var type = url.split('#');
var hash = '';
if(type.length > 1)
  hash = type[1];
alert(hash);

Рабочая демонстрация на jsfiddle


ifЗаявление может быть сокращено до var hash = type[1] || "";.
user4642212



6

Это очень просто. Попробуйте код ниже

$(document).ready(function(){
  var hashValue = location.hash.replace(/^#/, '');  
  //do something with the value here  
});

3
var hashValue = location.hash.replace (/ ^ # /, '');
Флакерими

3

Основываясь на коде AK, вот вспомогательная функция. JS Fiddle Here ( http://jsfiddle.net/M5vsL/1/ ) ...

// Helper Method Defined Here.
(function (helper, $) {
    // This is now a utility function to "Get the Document Hash"
    helper.getDocumentHash = function (urlString) {
        var hashValue = "";

        if (urlString.indexOf('#') != -1) {
            hashValue = urlString.substring(parseInt(urlString.indexOf('#')) + 1);
        }
        return hashValue;
    };
})(this.helper = this.helper || {}, jQuery);
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.