Javascript: долгое нажатие для диалога файлов - PullRequest
0 голосов
/ 12 июня 2019

Можно ли использовать долгое нажатие для диалога файлов? Например, Долгое нажатие в JavaScript? имеет ответ для запуска события при длительном нажатии. Однако это не может быть использовано для запуска щелчка при вводе файла в большинстве браузеров, поскольку это не считается активацией пользователя.

var pressTimer;

$("a").mouseup(function(){
  clearTimeout(pressTimer);
  // Clear timeout
  return false;
}).mousedown(function(){
  // Set timeout
  pressTimer = window.setTimeout(function() 
  {    fileChooser.click() // assume fileChoose is a file input element
       // This is suppressed by most browsers.
  },1000);
  return false; 
});

1 Ответ

0 голосов
/ 12 июня 2019

Конечно, это возможно.Вам, вероятно, придется разработать собственное обнаружение для него, используя события mousedown и mouseup.Вычислите время между mousedown и mouseup и определите, была ли задержка достаточной, чтобы вызвать какое-либо другое действие.

https://jsfiddle.net/psc4yk76/2/

(function() {
  const longtime = 500;
  const target = document.getElementById('target');
  const input = document.getElementById('input');
  const button = document.getElementById('button');

  var timedown = 0;

  button.onmousedown = () => {
    timedown = new Date().getTime();
  };

  button.onmouseup = () => {
    let timeup = new Date().getTime();
    let insert = document.createElement('div');

    if( (timeup - timedown) < longtime ) {
      insert.appendChild(document.createTextNode('Short!'));
    } else {
      insert.appendChild(document.createTextNode('Long!'));
      input.click();
    }

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