JS комбинация событий

Нужно выполнить код, если текст скопирован и нажата кнопка.

window.addEventListener('DOMContentLoaded', () => {
  document.addEventListener('mouseup', function() {
    const text = window.getSelection();
    window.addEventListener('keypress', function(e) {
      alert('Клавиша: ' + e.keyCode + ' Текст: ' + text);
      return e.keyCode;
    });
     return text;
  });
});

Есть проблема в моем коде. Условие выполняется несколько раз, что очень странно. И это происходит в случайном порядке.


Ответы (1 шт):

Автор решения: Igor

Какое к этому имеет отношение mouseup?


Условие выполняется несколько раз

На каждый mouseup Вы добавляете еще один обработчик keypress.

window.addEventListener('DOMContentLoaded', () => {
  const text = window.getSelection();
  window.addEventListener('keypress', function(e) {
    console.log('Клавиша: ' + e.keyCode + ' Текст: [' + text + ']');
  });
});
<span>The walrus and the carpenter</span>

→ Ссылка