【问题标题】:JQuery mouseup outside window – possible?窗口外的 JQuery mouseup – 可能吗?
【发布时间】:2011-07-22 01:59:42
【问题描述】:

我正在尝试完成一个基本的阻力。在 mousedown 项目开始拖动,但与鼠标的速度不同,所以当鼠标在窗口外时我继续拖动,但如果鼠标不在页面上,我无法获得 mouseup 事件。

我可以看到其他页面这样做,所以我知道这是可能的。感谢任何帮助。

编辑:例如

在 Vimeo http://vimeo.com/19831216 上播放任何视频,确保窗口在屏幕上足够小且上方有空间,然后左右拖动视频的进度条,现在将光标移到窗口顶部边缘之外,同时仍然拖动左/右 - 看到了吗?现在在窗口外释放鼠标按钮 - 拖动结束,视频继续播放。

注意:Vimeo 可以选择使用 Flash 播放器或 HTML5 播放器,这是与 html5 播放器一起使用的。

【问题讨论】:

    标签: jquery mouseevent


    【解决方案1】:

    您实际上可以将鼠标移到浏览器窗口之外。

    至少对我有用。

    $(function(){
        $(window).mouseup(function(){
           alert('mouse up'); 
        });
    });
    

    http://jsfiddle.net/fFeJ6/

    在 Ubuntu Maverick 上使用 Chrome 10。

    【讨论】:

    • 谢谢,简单吧?我使用的是“body”而不是 window。
    • 是的,它实际上在 firefox 4 上工作,但 firefox 需要 alert() 将参数传递给 fire,我忘记了。干杯!
    • 我在 windows 和 mac 上测试过,这段代码有效。只需在某些浏览器的警报函数中添加一个字符串即可。
    • 您可以将代码粘贴到答案中吗?节省额外点击的人。 :)
    • 在 firefox (24.0/windows) 上,它适用于鼠标左键,但不会触发中键或右键(假设是右手,我猜)。 Chrome 做得更好,适用于所有 3 个按钮!
    【解决方案2】:

    你也许可以捕捉到 mouseout 事件,然后从那里调用你的 mouseup 函数:

    $(window).mouseout(function() { $(item).mouseup(); });
    

    【讨论】:

    • 我不想在离开窗口时鼠标向上。我想继续捕捉窗口外的拖动事件。
    • 这和我想做的有点相反
    • @hooleyhoop 这在 JS 中是不可能的。但是,您可以使用 AutoHotkey 之类的工具从任何窗口监视事件。
    • 这样做的问题是用户可能没有放手。他们可能会暂时将某些东西拖到窗外太远,然后再拖回来,然后它就丢失了,没有被拖走。为什么javascript不能告诉我鼠标指针当前是否向下? (在窗户上时)
    【解决方案3】:

    您无法使用 javascript 在浏览器窗口外跟踪鼠标事件。

    正如here 解释的那样,您只能检查鼠标是否离开窗口。

    【讨论】:

    • 嗯,感谢您提供非常有用的链接,这似乎表明这是可能的,而您是说不可能?
    • 也许它在 Flash 中是可能的,但不是在 javascript 中
    • 真的吗?我正在查看的 Vimeo 页面上没有 flash。
    • 真的吗?尝试用萤火虫检查视频本身
    • 是真的真的真的 - 我没有安装任何 Flash 播放器。我在 OSX safari - 再次,没有安装任何闪存。
    猜你喜欢
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    相关资源
    最近更新 更多