Выстрелить диалоговое окно, когда пользователь нажимает на внешние ссылки - PullRequest
1 голос
/ 27 июня 2019

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

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

Вот код:

function exit_confirm(event) {
   let url;
   if (event.target.nodeName === "a") {
     url = event.target.getAttribute('href');
   }
   if (window.confirm('Do you want to leave the site?')) {
      window.location.href = url;
   }
}

function getAllElementsWithDataAttribute() {
  return document.querySelectorAll('*[data-]');
}

function registerOnClickChangeKeydownEventsOfElementsWith() {

 let elementsWithDataAttribute = getAllElementsWithDataAttribute();

 ['click', 'change', 'keydown'].forEach(evt => {     
     elementsWithDataAttribute.addEventListener(evt, exit_confirm, false);
 });
}

Код не является окончательной версией.
Я должен получить url по нажатой ссылке и передать его window.location.href
Мне также нужно проверить нажатую ссылку, если это внешняя ссылка.
*[data-] - здесь должно быть что-то, что определяет ссылку

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