【问题标题】:Possible to get mouse events fired when cursor is outside page?当光标在页面外时可能会触发鼠标事件?
【发布时间】:2011-01-20 22:36:46
【问题描述】:

我正在创建一个游戏,在该游戏中,人们可以按住鼠标按钮并拖动它来旋转对象。但是,当鼠标位置超出页面边界时,不再触发所有鼠标事件。这意味着当光标在页面之外时,对象不再旋转;此外,当用户在页面边界之外释放鼠标时,我无法跟踪这意味着当光标回到页面边界时对象仍在旋转,尽管它不再被按下。

那么,当光标超出页面边界时,有什么方法可以触发 mousemove / mousedown / mouse[...] 事件?

【问题讨论】:

  • 我认为如果存在这种情况,它在不同的浏览器和操作系统中会表现得非常不同。
  • 为什么会有如此不同的行为?老实说,这并不复杂。

标签: javascript


【解决方案1】:

没有。但是您可以跟踪 mouseout 事件并使它们的行为类似于 mouseup。

【讨论】:

  • 这解决了第二个问题,但不是第一个问题。不过可能值得实施
【解决方案2】:

很遗憾没有,对此感到抱歉!

【讨论】:

  • 哦,好吧,这只是一个遗憾。无需抱歉:)
【解决方案3】:

你无论如何都能够做到这一点没有任何意义。如果您不与浏览器交互,那么浏览器如何知道该做什么?

【讨论】:

  • 好吧,如果一个人按下鼠标按钮并旋转对象,如果他可以在屏幕上移动光标并且当光标在外面时对象不会停止旋转,那将是有意义的这页纸。不是很人性化。
  • 是的,我知道你的意思。我想您可以检查的一件事是鼠标在哪里,并检查它是否超出了窗口本身的范围。
  • 据我所知,当光标在窗口外时,不仅可以看到光标在屏幕上的位置。事实上,如果可以的话,根本不会有任何问题;)
  • 对,但是您可以跟踪以查看鼠标在窗口本身内的位置。你可以有一些监听器在窗口内寻找鼠标位置,如果它到达窗口的边界,那么你可以触发一些事件
【解决方案4】:

您可以使用在 jQuery 1.4 中工作的 mouseleave。

在 JQuery 中:

$("body").mouseleave(function() {
    //Your code here
    alert("Mouse has left");
});

根据我的测试,这在 Firefox 和 IE7 中确实有效。

http://www.bennadel.com/blog/1805-jQuery-Events-MouseOver-MouseOut-vs-MouseEnter-MouseLeave.htm

【讨论】:

  • 谢谢,但是当鼠标在页面外移动时,没有办法看到它去了哪里,是吗?
  • 啊,没有。抱歉,我回答了一半。
猜你喜欢
  • 1970-01-01
  • 2021-08-22
  • 2013-04-04
  • 1970-01-01
  • 2011-02-23
  • 1970-01-01
  • 2011-04-08
  • 2021-02-15
  • 1970-01-01
相关资源
最近更新 更多