Javascript задерживает событие mousedown - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь заставить работать следующий код:

document.onmousedown = function(e){
  setTimeout(function(){ e }, 3000);
};

Это просто псевдокод, но я хочу захватить событие mousedown и запустить его позже.Не имеет значения, запускается ли он в первый раз или нет (то есть предотвращает ошибку).

Если бы это было событие щелчка, я знаю, что я мог бы просто сохранить clientX, clientY of e и повторно инициализировать событие, но я не могне найти способ имитировать мышь с помощью JavaScript.

Ответы [ 4 ]

0 голосов
/ 11 октября 2018

Ваш код не имеет проблем.Может быть, где-то еще заменить слушателя onmousedown.Лучше всего использовать addEventListener

document.addEventListener("mousedown", function(e) {
setTimeout(function() {
   //your code here
}, 3000)});

или, если вы используете jQuery, вы можете использовать этот код

$(document).on("mousedown", function(e) {
    setTimeout(function() {
        //your code here
    }, 3000);
});
0 голосов
/ 11 октября 2018

Попробуйте этот код

HTML-код:

<p id="myParaid">
Click the text! The mouseDown() function is triggered when the mouse button is pressed down over this paragraph, 
</p>

JS-код:

$( "#myParaid" ).mousedown(function() {
  alert( "Handler for .mousedown() called." );
  setTimeout(myFunction, 3000);
});
function myFunction(){
alert('3000 Over');
}

Jsfiddle

0 голосов
/ 11 октября 2018

Вы можете попробовать что-то вроде этого:

document.onmousedown = (args) =>
  setTimeout(() => fn.apply(null, [args]), 500)

var fn = (args) => {
  console.log('onmousedown args', args)
}
Click anywhere and check the console (wait for it)

Если я правильно вас понимаю, это позволит вам выполнить это событие onmousedown позднее с теми же параметрами.

См.это здесь

0 голосов
/ 11 октября 2018

Если вы хотите запустить событие mousedown , просто используйте этот API MouseEvent ()

Конструктор MouseEvent () создает новое MouseEvent.

Код такой:

var trigger = false
document.onmousedown = function(e){
    var t = new MouseEvent('mousedown',e)
    console.log(t)
    if(!trigger)
    {
        trigger = true;
        document.dispatchEvent(t)
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...