Как отложить или перехватить изменение навигации, пока функция не завершит работу в DOM с использованием расширения Chrome - PullRequest
1 голос
/ 17 октября 2019

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

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

Что я пробовал до сих пор:

  1. Я попытался перехватить навигацию на фоновой странице, используя это расширение API chrome.webNavigation.onBeforeNavigate.addListener(function callback).

Он перехватывает его правильно, но я не могу найти способ отложить навигацию. Навигация все еще происходит как обычно.

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

Мои вопросы:

  1. Можно ли отложить навигацию? setTimeout в js является асинхронным, поэтому навигация никоим образом не блокируется.
  2. Есть ли другой способ дождаться завершения функции до изменения маршрута (обещания не помогают, потому что маршрут все еще происходит до негорешить)?

1 Ответ

0 голосов
/ 19 октября 2019

Я могу предложить вам запасной вариант.

Будет ли он работать, если вы сохраните координаты элемента x и y непосредственно перед применением функции генерации селектора, чтобы в случае сбоя вы могли вернуться к предыдущему маршруту и ​​применить селекторгенерация на элементе с сохраненными координатами x и y?

Может работать, только если узким местом является функция генерации селектора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...