URLからフラグメント識別子(ハッシュ#の後の値)を取得するにはどうすればよいですか?


211

例:

www.site.com/index.php#hello

jQueryを使用して、値helloを変数に入れます。

var type = 

この質問にjQueryのタグを付けたままにする必要があるかどうかは不明です。答えのほとんどはjQueryなしのJSに適用され、これは適切な重複ターゲットのようです。
user4642212 2018年

回答:


585

jQueryは不要

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

154
jQueryが足りません!(冗談です:+1。)
nnnnnn

2
#をJavaScriptで識別子/キーワードとして機能する「ハッシュ」として使用できることを学びました。すばらしい
Clain Dsilva、2015年

13
.slice(1)代わりに.substr(1)を使用することもできますが、実際の生活には違いはありませんが、パフォーマンスはわずかに向上します。
devius

3
OMG、目立つ違いを作るためにURLハッシュをチェックする必要があるのは何回ですか。100万?「控えめな増加」は、この文脈では大きな誇張です。:-)
konrad 2017

37

次のコードを使用してそれを行うことができます:

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

デモを見る


4
注:IE8ではindexOfはサポートされていません
Sebastiaan Ordelman '10 / 06/15

4
@SchalkKeun幸いなことに、今'18年にはほとんどなくなっています。しかし、その伝説にまだ対処しなければならない人にとっては、それを知っておくべきです。
Sebastiaan Ordelman

6
正直なところ、IE8は非常に安全ではなく、すべての支払いゲートウェイは基本的にTLS 1.2をサポートしていないブラウザを来週(2018年6月30日)ドロップし、それらからの支払いはまったくできなくなります。そのため、これらすべての古いブラウザは、eコマースクライアントには役に立たなくなります。
Schalk Keun

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 2018年



6

それは超簡単。以下のコードを試してください

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

3
var hashValue = location.hash.replace(/ ^#/、 '');
flakerimi

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);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.