0

URL に特定の文字列がある場合にのみアクションを実行する関数を作成する必要があります。私が見つけている問題は、文字列が別の文字列の一部として複数のインスタンスで発生する可能性があることです。文字列が "?page=1" のみの場合に関数を実行する必要があります。私が見つけたのは、文字列に "?page=10" 、 "?page=11" 、 "?page=12" などの文字列が含まれている場合にも関数が実行されていることです...文字列が "?page=1" の場合は完了 - それだけです。それ、どうやったら出来るの?私はいくつかの異なる方法を試しましたが、うまくいきません。どんな助けでも大歓迎です。これは私が使用した最新のコードです。これは近いですが、葉巻はありません。

var location = window.location.href; 
if (location.indexOf("?page=1") > -1){
//Do something
};
4

3 に答える 3

0

?pageGET パラメータです。必ずしも URL 文字列の最初にある必要はありません。GET パラメータを適切にデコードし、それに基づいてロジックを作成することをお勧めします。これを行う方法は次のとおりです。

function unparam(qs) {
    var params = {},
        e,
        a = /\+/g,
        r = /([^&=]+)=?([^&]*)/g,
        d = function (s) { return decodeURIComponent(s.replace(a, " ")); };

    while (e = r.exec(qs)) {
        params[d(e[1])] = d(e[2]);
    }

    return params;
}

var urlParams = unparam(window.location.search.substring(1));

if(urlParams['page'] == '1') {
    // code here
}

別の方法として、単語境界を持つ正規表現も機能します。

if(/\bpage=1\b/.test(window.location.search)) {
    // code here
}
于 2013-08-27T17:52:01.550 に答える