5

jQueryを使用して、現在のハッシュなしと空のハッシュを区別する方法はありwindow.locationますか?

これは私が「空のハッシュ」と呼んでいるものです。

http://domain.tld/#

そして、これは「ハッシュなし」です:

http://domain.tld/
4

3 に答える 3

7

window.location.hash""ハッシュなしと空のハッシュの両方を返します。何らかの理由で区別する必要がある場合は、次のように分割できwindow.location.hrefます#

var frag = window.location.href.split("#");

if (frag.length == 1) {
    // No hash
}
else if (!frag[1].length) {
    // Empty hash
}
else {
    // Non-empty hash
}

または、リクエストに応じて、最初に既存のハッシュを確認します。

if (window.location.hash) {
    // Non-empty hash
}
else if (window.location.href.split("#").length == 1) {
    // No hash
}
else {
    // Empty hash
}

参照:ページを更新せずに JavaScript を使用して window.location からハッシュを削除する方法

于 2013-02-27T13:55:21.080 に答える
1

これには jQuery は必要ありません。空のハッシュがある場合は、 の最後の文字をチェックするだけですwindow.location.hreftrue空のハッシュがある場合、次が返されます。

window.location.href.lastIndexOf('#') === window.location.href.length - 1
于 2013-02-27T13:54:32.377 に答える
0

Andy E のソリューションの再利用可能なバージョンに興味がある人向け。実際のハッシュ状態をビットごとの値として取得する単純な関数を作成しました。

/**
 * Checks if the location hash is given, empty or not-empty.
 *
 * @param {String} [href] Url to match against, if not given use the current one
 * @returns {Number} An integer to compare with bitwise-operator & (AND)
 */
function getHashState(href) {
  var frag = (href || window.location.href).split('#');
  return frag.length == 1 ? 1 : !frag[1].length ? 2 : 4;
}

戻り値は、ビットごとの AND 演算子 ( ) を使用して簡単に比較できます&

if (getHashState() & 1); // no hash
if (getHashState() & 2); // empty hash
if (getHashState() & 4); // no empty hash
于 2015-03-30T09:56:28.463 に答える