如何忽略URL中的额外参数?

时间:2016-07-06 14:14:34

标签: javascript url parameters location

< noob> 当我使用正确的URL

时,以下代码就像一个魅力

www.exemple.com/?login

$(document).ready(function(){

function urlparam(){
    var url = window.location.href.split('?')[1];
    if (url == 'login' ) {
        document.getElementById('loginMainContainer').style.display = 'block';
        $('.login').triggerHandler('click');
    } else if (url == 'signup' ){
            document.getElementById('loginMainContainer').style.display = 'block';
            $('.signup').triggerHandler('click');
    }
}
    urlparam()   
});

但是,一旦我需要将此URL与其他参数(w / mailchimp)一起使用

www.exemple.com/?login&utm_source=App+Accounts&utm_campaign=e94f95d4da-News_promo+email_English_2016

它确实没有执行我需要的东西。 有没有办法忽略这些额外的参数并正确执行我的功能?

感谢先进的任何帮助!

< / noob>

2 个答案:

答案 0 :(得分:0)

您只需获取所有参数并检查是否存在login

var url="http://someurl.com?test=ok&machin=1234&login&azir=lol";

function parameterExist(url,paramName)
{
  var parameters = url.split('?')[1].split('&');
  for(var i=0;i<parameters.length;i++)
  {
     var paramNameUrl=parameters[i].split('=')[0];
     if(paramNameUrl==paramName)
       return true;
  }
  return false;
}

console.log(parameterExist(url,"login"));
console.log(parameterExist(url,"blabla"));

答案 1 :(得分:0)

我会使用正则表达式来处理这个问题,如果字符串以login开头或者以注册开头,它会进行测试以匹配。

    var url = ('www.exemple.com/?login&utm_source=App+Accounts&utm_campaign=e94f95d4da-News_promo+email_English_2016').toString().split('?')[1];
    if (url.match(/^login/ )) {
        console.log('login');
    } else if (url.match(/^signup/ )){
        console.log('signup');
    }