Как прослушать изменения в window.location.search в 2019 году - PullRequest
0 голосов
/ 21 сентября 2019

Я хотел бы обновить window.location.search без перезагрузки документа и затем выполнить функцию на основе обновленных значений в window.location.search.

Когда пользователь нажимает кнопку, этоСобытие кнопки onclick вызывает следующую функцию:

window.history.pushState({action : 'myAction'}, document.title, '?action=myAction');

Пока все хорошо.window.location.search обновляется в адресной строке браузера.

Но я не могу найти общий слушатель фоновых событий, который обнаруживает это обновление - что-то вроде onhashchange, но для строк запроса.

лучшее, что я могу придумать, это:

window.history.pushState({action : 'myAction'}, document.title, '?action=myAction');
window.history.pushState({action : 'myAction'}, document.title, '?action=myAction');
window.history.back();

window.addEventListener('popstate', () => console.log(event.state.action));

Это работает, но я убежден, что должен быть более элегантный подход.

1 Ответ

0 голосов
/ 22 сентября 2019

Я предварительно делаю вывод, что нет никакого способа достичь этого эффекта, используя фоновый прослушиватель событий, который может определять, когда обновляется строка запроса.

Вместо этого, поскольку я знаю наверняка, чтострока запроса будет проверяться только :

  • при загрузке или перезагрузке страницы
  • при вызове window.history.pushstate

Я могу использовать следующее:

window.addEventListener('load', checkQueryString);

и

window.history.pushState({action : 'myAction'}, document.title, '?action=myAction');

checkQueryString();
...