Страницы

Поиск по вопросам

среда, 4 марта 2020 г.

Имитация длительного нажатия клавиши

#javascript


Меня интересует
Как медленно физически нажать на кнопку с помощью javascript на веб странице сайта?

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

В Общем как сделать так чтобы кнопка среагировала в авторежиме, как будто на нее
реально нажали, потом отпустили нажатую кнопку, вот собственно вот так показать физический
клик по кнопке.

вот нашел фрагмент команды например



  addEventListener("keydown", function(event) {
    if (event.keyCode == 32 && event.ctrlKey)
      console.log("Продолжаем!");
  });





  События «keydown» и «keyup» дают информацию о физическом нажатии
  кнопок. А если вам нужно узнать, какой текст вводит пользователь?
  Создавать его из нажатий кнопок – неудобно. Для этого существует
  событие «keypress», происходящее сразу после «keydown» (и
  повторяющееся вместе с «keydown», если клавишу продолжают удерживать),
  но только для тех кнопок, которые выдают символы. Свойство объекта
  события charCode содержит код, который можно интерпретировать как код
  Unicode.


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

То есть я о чем? чтобы имитировать реальное нажатие на кнопку, кнопку(ссылку), а
не программный переход по сайту. Как реально это лучше сделать?
    


Ответы

Ответ 1



Вот реализация, остальное по примеру можете накрутить сами ) (function(){ addEventListener("keydown", function(event) { if (event.keyCode == 32 && event.ctrlKey) document.getElementById('btn').classList.add('active'); }); })() button.active { background-color: green;transition: all 5s ease; } Это с покраской, но мне нравиться больше вот эта реализация (function(){ addEventListener("keydown", function(event) { if (event.keyCode == 32 && event.ctrlKey) document.getElementById('btn').classList.add('active'); setTimeout(function(){ document.getElementById('btn').classList.remove('active'); },1000) }); })() button.active { border-style: inset; background: red; color:#fff;}

Ответ 2



используйте css3 transition-delay. код примерно будет такой: button:hover { background-color: red; transition: all 2s ease; } button:active { background-color: green; transition: all 5s ease; } button:focus { background-color: blue; transition: all 2s ease; } `

Комментариев нет:

Отправить комментарий