Для предотвращения бесконечной цикличности обновления страницы при добавлении 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, предотвращая бесконечную цикличность обновлений страницы.