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

您可以查看 url 中紧跟在字符串 "?page=1" 之后的字符。如果是数字,则没有匹配项,否则有。你可以简单地做这样的事情:

  var index = location.indexOf("?page=1"); //Returns the index of the string
  var number = location.charCodeAt(index+x); //x depends on the search string,here x = 7
  //Unicode values for 0-9 is 48-57, check if number lies within this range

现在您有了下一个字符的 Unicode 值,您可以轻松推断 url 是否包含您需要的字符串。我希望这能为您指明正确的方向。

于 2013-08-27T17:56:57.937 回答
0

?page是一个 GET 参数。它不一定必须是 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 回答
0
if(location .indexOf("?page=1&") != -1 || (location .indexOf("?page=1") + 7 == i.length) ) {

}
于 2013-08-27T17:47:46.337 回答