Я пытаюсь сделать следующий код работы:
document.onmousedown = function(e){
setTimeout(function(){ e }, 3000);
};
Это всего лишь псевдокод, но я хочу захватить событие mousedown и запустить его позже. Это не имеет значения, если он срабатывает в первый раз или нет (т.е. Preventdefault).
Если это событие щелчка, я знаю, что я мог бы просто сохранить clientX, clienty of e и повторно инициализировать событие, но я не смог найти способ имитировать мышь с помощью JavaScript.
Вы можете попробовать что-то вроде этого:
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
позже с теми же параметрами.
Смотрите здесь
Если вы хотите вызвать событие 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)
}
};
Попробуйте этот код
Код 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');
}
У вашего кода нет проблем. Может быть, где-нибудь еще заменить onmousedown listenter. Лучше всего использовать addEventListener
document.addEventListener("mousedown", function(e) {
setTimeout(function() {
//your code here
}, 3000)});
или если вы используете jQuery, вы можете использовать этот код
$(document).on("mousedown", function(e) {
setTimeout(function() {
//your code here
}, 3000);
});