I'我试图在mousedown之后强制mouseup事件

I'm trying to force mouseup event after mousedown

本文关键字:之后 mousedown 事件 mouseup      更新时间:2023-09-26
elements[0].onmousedown = function(){
      console.log('screen clicked.');
      simulatemouseuphere;
};

我所需要做的就是在我的函数中添加一些触发mouseup的东西,即使用户按下了点击按钮。

elements[0]是我的整个页面范围,所以无论你点击哪里,它都会触发。

我确信您可以直接调用onmouseup事件。。。

elements[0].onmousedown = function(){
      console.log('screen clicked.');
      elements[0].onmouseup();
};

请记住,当您实际停止按住鼠标时,mouseup事件将再次触发。(除非在onmouseup((事件中您进行了管理(

快速测试,看起来很有效:http://jsfiddle.net/cUCWn/40/

只是猜测,但也许您想触发绑定到mouseup事件的函数,而不是触发mouseup事件?

var onMouseUp = function() { 
 /* something */  
};
var onMouseDown = function() { 
 /* something */ 
 onMouseUp.apply(this,arguments); 
};
elements[0].onmousedown = onMouseDown;
elements[0].onmouseup = onMouseUp;
$("body").on("mousedown", function(e)
{
    e.type = "mouseup";
    $(this).trigger(e);
}).on("mouseup", function(e)
{
    console.info(e);
});

或者:https://stackoverflow.com/a/12724570/2625561

对于纯JS:https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events#Triggering_built-in_events

这里描述的所有方法都取决于如何设置侦听器:jQuery,element属性。

如果你想要一种强大的方式,无论事件是如何设置的,都能工作,请使用how can I trigger a JavaScript event click

elements[0].onmousedown = function(){
    fireEvent(elements[0], 'onmouseup');
};

请注意,最好将mouseup处理程序的行为封装到可以调用的函数中。触发处理程序通常是代码气味,因为您并不总是知道在触发事件时还可能触发什么。例如:

function doSomethingOnMouseUp() {
    console.log('something on mouse up');
}
elements[0].onmousedown = function(){
    doSomething();
    doSomethingOnMouseUp();
};
elements[0].onmouseup = doSomethingOnMouseUp;