gpt4 book ai didi

javascript - 为什么不使用 mouseup 事件目标而不是 "old school"拖放的位置?

转载 作者:数据小太阳 更新时间:2023-10-29 04:46:44 28 4
gpt4 key购买 nike

因此,据我所知,几乎所有与 IE 兼容的拖放操作都使用定位来确定将某些内容放置在何处。做一些类似 mousedown 的事情,确定所有可放置的位置,mouseup 确定我们是否处于可放置的位置。为什么?我制作了一个快速原型(prototype),它似乎可以工作,它使用 mouseup 上的 event.target(在 jquery 中,所以无论它转换到其他地方)来确定放置元素。

是否有令人信服的理由不这样做? (在 mouseup 上使用 e.target)。所以,mousedown 决定了拖拽的是什么,mouseup 决定了拖放的位置。添加一些变量以确保我们正在拖动,并记住拖动的是什么。

最佳答案

我的猜测:因为 mouseup 上的 e.target 可以引用您正在拖动的元素(或其 drag-ghost)。如果您拖动一个元素,并且它(或半透明的幽灵元素)跟随您的光标,就像在您的桌面上拖动文件一样,您的鼠标将始终在您拖动的元素上,当您鼠标弹起。


或者,如果没有光标跟随,也没有重影,e.target 可能指的是“dropzone 元素”内的元素,而不是 dropzone 本身。

例如:

<div id="dropzone_element">
<div id="previously_dropped_element" />
<div>

<div id="draggable_element" />

因此,如果您将可拖动元素拖到放置区元素上并释放鼠标,您实际上是在放置区内先前放置的元素上释放鼠标;不是 dropzone 本身。

在这两种情况下,检查鼠标位置是获得正确放置区元素的唯一方法。

这些是我的猜测,但我没有 IE 来检查实际行为。


编辑:在第一种情况下,位置检查是唯一的方法。在第二种情况下,您还可以检查目标的祖先以找到 dropzone 元素,正如 aephus 在评论中指出的那样。也就是说,如果之前放置的元素实际上已经插入到放置区的层次结构中,而不仅仅是定位成看起来像它的样子——尽管这样做真的很奇怪:)

关于javascript - 为什么不使用 mouseup 事件目标而不是 "old school"拖放的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6736057/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com