【问题标题】:Detect drag event on window检测窗口上的拖动事件
【发布时间】:2012-11-25 01:26:55
【问题描述】:

我拼命想解决这个问题,但我想不出正确的方法。

我试图让用户能够通过将图片拖放到浏览器中来更改背景图片。但是,我无法正确检测到拖动事件。使用时

$(window).on 'dragenter', (e) =>
  console.log e.target
$(window).on 'dragleave', (e) =>
  console.log e.target

我总是会在单个 DOM 元素上触发事件,但不会在窗口/主体本身上触发事件,这意味着如果我的 DOM 元素/容器/包装器没有覆盖整个窗口,它就无法正常工作。我知道这是可能的,因为 GMail 可以让它以某种方式工作,但我真的不知道我在这里做错了什么。

谢谢!

【问题讨论】:

    标签: javascript jquery html drag-and-drop


    【解决方案1】:

    如果我正确解释了您的问题,您需要将事件绑定到 $(document)。由于事件传播,所有内容最终都应该冒泡到文档中。如果您只想拖动页面的特定部分,请尝试使用类/类选择器。

    【讨论】:

    • 感谢您的回答。我将它绑定到窗口/文档和正文,因为它应该冒泡。但是,问题在于它似乎并没有这样做。问题还在于,即使我得到了 dragleave 事件,目标也永远不是它自己的主体/窗口,所以我永远无法知道它何时真正离开窗口,对吧?
    • 嗯...这很奇怪。它应该冒泡。您是否使用任何 stopPropogations?那些有时会弄乱事件冒泡。你是什​​么意思目标不在窗口中?似乎您可以简单地使用 e.target...
    • 是的,我使用 jquery 并检查 e.target,如上所示,但它永远不会冒泡......我想我网站上的某些东西正在捕获和防止默认,但我没有在这些上注册任何其他侦听器事件...
    • 当我阅读 here 时,没有任何拖动事件冒泡。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    相关资源
    最近更新 更多