6

生の Javascript では、特定のハッシュ タグが URL に存在することを確認し、値を取得するにはどうすればよいでしょうか?

例: http://www.example.com/index.html#hashtag1=value1&#hashtag2=value2

ハッシュタグ 1またはハッシュタグ 2のいずれかの値を取得できるようにしたいと考えています。

4

4 に答える 4

26
    var HashSearch = new function () {
       var params;

       this.set = function (key, value) {
          params[key] = value;
          this.push();
       };

       this.remove = function (key, value) {
          delete params[key];
          this.push();
       };


       this.get = function (key, value) {
           return params[key];
       };

       this.keyExists = function (key) {
           return params.hasOwnProperty(key);
       };

       this.push= function () {
           var hashBuilder = [], key, value;

           for(key in params) if (params.hasOwnProperty(key)) {
               key = escape(key), value = escape(params[key]); // escape(undefined) == "undefined"
               hashBuilder.push(key + ( (value !== "undefined") ? '=' + value : "" ));
           }

           window.location.hash = hashBuilder.join("&");
       };

       (this.load = function () {
           params = {}
           var hashStr = window.location.hash, hashArray, keyVal
           hashStr = hashStr.substring(1, hashStr.length);
           hashArray = hashStr.split('&');

           for(var i = 0; i < hashArray.length; i++) {
               keyVal = hashArray[i].split('=');
               params[unescape(keyVal[0])] = (typeof keyVal[1] != "undefined") ? unescape(keyVal[1]) : keyVal[1];
           }
       })();
    }

それを使用して:

「ハッシュキー」が存在するかどうかを確認します。

 HashSearch.keyExists("thekey");

ハッシュ キーの値を取得します。

 HashSearch.get('thekey');

ハッシュ キーの値を設定し、URL ハッシュを更新します。

 HashSearch.set('thekey', 'hey');

URL からハッシュ キーを削除します。

 HashSearch.remove('thekey');

ハッシュをローカル オブジェクトにリロードします。

 HashSearch.load();

現在のキー値セットを URL ハッシュにプッシュします。

 HashSearch.push();

キーが存在しない場合にそれを試みるとget、 が返されることに注意してくださいundefined。ただし、値のないキーが存在する可能性があります。たとえば#key=val&novalue、novalue は値のないキーです。HashSearch.get("novalue")すると、 も返されますundefined。その場合、HashSearch.keyExists("novalue")それが実際にキーであることを確認するために使用する必要があります。

于 2010-09-16T18:25:18.167 に答える
10

私はこれを使用します、そしてそれは私にとってうまく機能します。それは私がどこかで拾ったラインに少し慣れています、私はSOを信じています。

getURLHashParameter : function(name) {

        return decodeURI(
            (RegExp('[#|&]' + name + '=' + '(.+?)(&|$)').exec(location.hash)||[,null])[1]
        );
    }, 
于 2011-08-25T08:57:36.880 に答える
7

window.location.hashあなたが望むものをあなたに与えるべきです。

于 2010-09-16T18:24:57.530 に答える
0

jQuery BBQ(戻るボタンとクエリ)は、HTML5 hashchangeイベントを利用して、シンプルでありながら強力なブックマーク可能な#hash履歴を可能にします。さらに、jQuery BBQは、ハッシュ状態管理とフラグメント/クエリ文字列の解析およびマージユーティリティメソッドの両方に加えて、完全な.deparam()メソッドを提供します。

つまり、このライブラリを使用すると、ページ内のハッシュ「クエリ文字列」を動的に変更して、URLを一致させることができます。また、値を動的にプルし、「クエリ文字列」の操作を正規化することもできます。最後に、クエリ文字列を履歴に追加します。これにより、戻るボタンが前のクエリハッシュ値間のナビゲーションとして機能できるようになります。

UXの良い動きは、jQueryBBQのようなライブラリをチェックアウトすることです:)

于 2012-01-31T01:51:25.077 に答える