Javascript延迟mousedown事件

时间:2018-10-11 02:10:07

标签: javascript onclick

我正在尝试使以下代码起作用:

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

这只是伪代码,但我想捕获mousedown事件并在以后触发它。不管它是否第一次触发(即preventdefault)。

如果这是一个单击事件,我知道我可以保存e的clientX,clientY并重新初始化该事件,但是我找不到用JavaScript模拟鼠标按下的任何方法。

4 个答案:

答案 0 :(得分:3)

如果您想触发 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)
    }
};

答案 1 :(得分:1)

尝试此代码

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

答案 2 :(得分:1)

您可以尝试以下操作:

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事件。

查看here

答案 3 :(得分:0)

您的代码没有问题。也许在其他地方替换了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);
});