Я использую расширение Chrome и хочу запустить функцию, которая генерирует селектор из элемента, на который пользователь нажал.
На статических страницах это работает, проблема в том, что когда пользователь нажимает на ссылку вSPA-сайт, маршрут быстрее, чем функция, и затем DOM изменяется, прежде чем функция сгенерирует селектор.
Что я пробовал до сих пор:
- Я попытался перехватить навигацию на фоновой странице, используя это расширение API
chrome.webNavigation.onBeforeNavigate.addListener(function callback).
Он перехватывает его правильно, но я не могу найти способ отложить навигацию. Навигация все еще происходит как обычно.
Я также пытался заблокировать запрос с помощью API расширения webRequest, но не могу отключить блокировку после завершения работы функции. (Я не верю, что это правильный путь)
Мои вопросы:
- Можно ли отложить навигацию? setTimeout в js является асинхронным, поэтому навигация никоим образом не блокируется.
- Есть ли другой способ дождаться завершения функции до изменения маршрута (обещания не помогают, потому что маршрут все еще происходит до негорешить)?