Как убрать бесконечную цикличность обновлений страницы, при добавлении get-параметров в url?

Для предотвращения бесконечной цикличности обновления страницы при добавлении GET-параметров в URL можно воспользоваться условием, которое проверяет наличие добавляемого параметра в строке запроса и выполняет действие только в том случае, если параметра нет.

Прежде всего, необходимо проверить, существует ли определенный GET-параметр в URL. В JavaScript это можно сделать, используя объект URLSearchParams и его метод has():

var urlParams = new URLSearchParams(window.location.search);
if (!urlParams.has('someParameter')) {
  // выполнить нужные действия
}

В данном примере мы создаем новый экземпляр URLSearchParams, передавая текущий URL страницы в качестве аргумента. Затем мы используем метод has(), чтобы проверить наличие параметра 'someParameter'. Если параметр не существует, выполняем нужные действия.

Теперь мы можем добавить параметр к URL, если его там нет:

var urlParams = new URLSearchParams(window.location.search);
if (!urlParams.has('someParameter')) {
  urlParams.append('someParameter', 'someValue');
  window.location.search = urlParams.toString();
}

Теперь, если параметр 'someParameter' отсутствует в URL, мы добавляем его и его значение 'someValue' с помощью метода append(). Затем присваиваем обновленную строку запроса к свойству window.location.search, чтобы перезагрузить страницу с новым параметром.

Наконец, если вы хотите удалить параметр из URL, если он присутствует, вы можете воспользоваться методом delete():

var urlParams = new URLSearchParams(window.location.search);
if (urlParams.has('someParameter')) {
  urlParams.delete('someParameter');
  window.location.search = urlParams.toString();
}

В этом случае мы проверяем наличие параметра 'someParameter' с помощью метода has(). Если параметр существует, мы удаляем его с помощью метода delete() и затем обновляем страницу с новой строкой запроса без этого параметра.

Вот пример в виде функции, которая проверяет и обновляет параметры URL:

function updateUrlParameter(parameter, value) {
  var urlParams = new URLSearchParams(window.location.search);
  if (!urlParams.has(parameter)) {
    urlParams.append(parameter, value);
    window.location.search = urlParams.toString();
  }
}

function removeUrlParameter(parameter) {
  var urlParams = new URLSearchParams(window.location.search);
  if (urlParams.has(parameter)) {
    urlParams.delete(parameter);
    window.location.search = urlParams.toString();
  }
}

Теперь вы можете использовать эти функции, чтобы добавить или удалить параметры URL:

updateUrlParameter('someParameter', 'someValue');
removeUrlParameter('someParameter');

Это позволит вам безопасно добавлять и удалять GET-параметры в URL, предотвращая бесконечную цикличность обновлений страницы.