Как предотвратить бесконечное обновление страницы при добавлении get-параметров в URL?

Как остановить бесконечное добавление параметра в URL при переходе и сохранить знак "?", чтобы фильтрация все равно работала?
  • 14 сентября 2023 г. 8:57
Ответы на вопрос 3
Для предотвращения бесконечного обновления страницы при добавлении get-параметров в URL можно выполнить следующие шаги:

1. Проверьте, есть ли уже параметр с таким именем в URL. Если да, то не добавляйте новый параметр и оставьте текущий URL без изменений.

2. Если параметр с таким именем отсутствует, добавьте новый параметр в URL.

Чтобы остановить бесконечное добавление параметра в URL при переходе и сохранить знак "?", можно произвести следующие действия:

1. Проверьте, есть ли уже знак "?" в URL. Если да, то считайте, что уже есть другие параметры, и добавляйте новые параметры с помощью знака "&" вместо "?". Например, URL "http://example.com/page?param1=value1" будет преобразовываться в "http://example.com/page?param1=value1&param2=value2".

2. Если знак "?" отсутствует в URL, добавьте новый параметр с помощью знака "?". Например, URL "http://example.com/page" будет преобразовываться в "http://example.com/page?param1=value1".

Вот пример JavaScript-кода, выполняющего указанные действия:

```javascript
// Получение текущего URL
var url = window.location.href;

// Проверка наличия параметра в URL
if (url.indexOf('param1=') === -1) {
  // Проверка наличия знака "?"
  if (url.indexOf('?') === -1) {
    // Добавление параметра с знаком "?"
    url += '?param1=value1';
  } else {
    // Добавление параметра с знаком "&"
    url += '&param1=value1';
  }

  // Обновление URL страницы без перезагрузки
  window.history.replaceState(null, '', url);
}
```

Необходимо заменить 'param1=value1' на нужное значение параметра. Этот код можно использовать для добавления одного или нескольких параметров.
if (содержимое адресной строки пусто) {
  перезагрузите страницу (/* ... */);
} 
 if (location.search === '') {
  refresh the page (/* ... */);
}
Похожие вопросы