我正在尝试在鼠标按下之后强制触发鼠标松开事件。

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

我只需要在我的函数中添加一些东西来触发mouseup,即使用户一直按住点击按钮也可以。

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


请查看以下链接 - http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onmousedown - SK.
4个回答

1

我相信你只需调用onmouseup事件即可...

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

      elements[0].onmouseup();
};

请记住,当你实际停止按住鼠标时,mouseup事件将再次触发。(除非在onmouseup()事件中你处理了它)
快速测试,看起来像是可以工作的: http://jsfiddle.net/cUCWn/40/

这正是我所需要的。我可以从这里开始连接各个部分,非常感谢你。 - abejdaniels
我收到了一个 "无法读取 null 的 'onmouseup' 属性" 的错误返回。function simMouseUp() { document.getElementById('keyboardBG').onmouseup(); } function test() { console.log("Mouse is up!"); } - abejdaniels
如果您在页面完全加载之前尝试执行此操作,可能是因为您的元素尚不存在(我假设它不会因为ID错误而找不到它)- 没有更多信息,恐怕我们可能无法提供太多帮助。 - Spacemonkey
只有在您使用element.onmouseup设置处理程序且未在处理程序中使用事件对象时,此方法才有效。如果要更加健壮,请参见 https://dev59.com/5HE95IYBdhLWcg3wRLwt#2381862 - Ruan Mendes
在mouseup函数内部,您将无法访问原始的事件对象。 - klenium

1
只是猜测,也许你想触发绑定到mouseup事件的函数,而不是触发mouseup事件本身?
var onMouseUp = function() { 
 /* something */  
};

var onMouseDown = function() { 
 /* something */ 
 onMouseUp.apply(this,arguments); 
};

elements[0].onmousedown = onMouseDown;
elements[0].onmouseup = onMouseUp;

0

我们不知道abejdaniels是否在使用jQuery,所以这可能没有帮助。 - StephenTG
更好了,但如果您忽略了jQuery解决方案,这本质上就是一个仅包含链接的答案。您应该尝试直接在答案中提供来自链接的关键信息。 - StephenTG

0

这里描述的所有方法都取决于您如何设置监听器:jQuery、元素属性等。

如果您希望有一种稳健的方法,无论事件如何设置都能起作用,请使用如何触发JavaScript事件单击

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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接