Перехватывать все события навигации от действий пользователя на странице - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь написать библиотеку JavaScript, которая должна перехватывать и обрабатывать все события навигации по ссылкам.По существу:

  • Пользователь нажимает (или иным образом активирует) ссылку
  • Обратный вызов перехватывает навигацию
  • Обратный вызов проверяет, содержит ли элемент определенные атрибуты
  • Если элемент содержит определенный атрибут, отмените навигацию и сделайте что-нибудь другое;в противном случае разрешите навигацию продолжить

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

Какой лучший способ реализовать это?

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

Обратите внимание, что я не пытаюсь запретить навигацию снаружи страницы (назад,home, заменяя URL), а также нет необходимости отлавливать навигацию, выполненную с помощью JavaScript (window.location и т. д.).

...