我正在尝试使以下代码起作用:
document.onmousedown = function(e){
setTimeout(function(){ e }, 3000);
};
这只是伪代码,但我想捕获mousedown事件并在以后触发它。不管它是否第一次触发(即preventdefault)。
如果这是一个单击事件,我知道我可以保存e的clientX,clientY并重新初始化该事件,但是我找不到用JavaScript模拟鼠标按下的任何方法。
答案 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');
}
答案 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);
});