5

我知道 IE 7 和 8 不存在窗口事件mouseup。我想知道是否有人找到了解决此问题的方法,或者这是否可能。

我目前正在开发一个项目,用户可以单击、拖动以绘制一条线,如果用户在窗口外拖动松开鼠标,则绘图事务将被取消。

4

2 回答 2

2

你的困难听起来更像是从窗口失去了事件的范围。

你在使用 jQuery 吗?使用 jQuery,您还可以标记 mousemove 事件并使用“which”属性来检测按钮是否被按下。当你回到窗口时,它甚至会触发。但是当你在窗外时它不会触发。

或者,您可以使用 $(window).mouseleave 来检测它何时离开窗口。但是,一旦它离开窗口,您就无法检测到更多的鼠标事件(如果它们能够检测到您何时右键单击桌面等,那将是一个可怕的缺陷)。

因此,您在某种程度上受到所有浏览器中的浏览器安全实现的限制,并且无法绕过它......但您可以添加一些围绕事件的工作以提供“类似”的体验。

于 2013-03-08T21:44:38.630 回答
0

不是直接的,但我相信这应该有效。

在您的mousemove事件中,检查Event.buttons属性。如果为零,则用户必须在窗口外释放鼠标,您可以取消拖动。

我现在正在检查此浏览器的兼容性,因此可以编辑此答案。我的电脑现在很慢!

于 2013-03-08T21:28:13.527 回答