如何使用参数编写条件window.location.href

时间:2019-10-26 22:12:22

标签: javascript

对不起我的英语。 我有以下javascript行用于网页重定向。

<script>
 window.location.href = "https://www.example.com/example_0/"  + document.location.search;
</script>

在以下情况下,我需要使用window.location.href修改网址的帮助。

让我更好地解释一下,原始网址是这样构建的:

http://www.example.com/result.php?clientId=528873&lang=IT

我必须确保在URL中读取了?clientId =参数,并基于此参数将用户通过此正确的window.location.href命令重定向到正确的URL,例如,如果clientID为= 849679返回此:

window.location.href = "https://www.example1.com/example_1/" + document.location.search;

如果参数为818586,它将通过此​​命令将用户重定向到正确的url

window.location.href = "https://www.example2.com/example_2/" + document.location.search;

等... 有人可以通过完整编写正确的代码来帮助我吗?我是滑坡,我不知道该怎么做:-(

2 个答案:

答案 0 :(得分:0)

为此,您可以使用URLSearchParams,具体取决于您的浏览器支持。 https://caniuse.com/#feat=urlsearchparams

const urlParams = new URLSearchParams(window.location.search);
const clientId = urlParams.get('clientId');

if(clientId === '849679') {
  window.location.href = "https://www.example1.com/example_1/" + document.location.search;
} else if (clientId === '818586') {
  window.location.href = "https://www.example2.com/example_2/" + document.location.search;
}

另一种解决方案是使用regexp或另一个库来提取查询参数。

function getParameterByName(name) {
  var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
  return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

const clientId = getParameterByName('clientId');

if(clientId === '849679') {
  window.location.href = "https://www.example1.com/example_1/" + document.location.search;
} else if (clientId === '818586') {
  window.location.href = "https://www.example2.com/example_2/" + document.location.search;
}

答案 1 :(得分:0)

非常感谢您,它运作良好。

我只是想问你一件事,因为主网址是

http://www.example.com/result.php?clientId=528873&lang=IT

并且我想在?clientID = 528873之前添加?a_aid = xxx,可以在重构url时将?clientID转换为&clientID吗?

也就是说,我想成为:

http://www.example.com/result.php?a_aid=xxx&clientId=528873&lang=IT