gpt4 book ai didi

javascript - dragenter/dragover 事件中没有 Event.fromElement 吗?

转载 作者:行者123 更新时间:2023-11-30 09:01:55 24 4
gpt4 key购买 nike

我正在玩完整形式的拖放(所以没有即时上传)。我虽然有一小部分会在将鼠标悬停在文件上时突出显示某个字段集。输入 dragoverdragenter 事件(和 dragleave 等)。

事实证明它不是这么小的一部分。 fiddle :http://jsfiddle.net/rudiedirkx/epp74/

试一试:拖过一个字段集并四处移动一下。第一个 over 触发 fieldset 的 dragenter 事件(fieldset 为黄色)。之后的移动(在同一个字段集中)触发了 dragenterdragleave(字段集不再是黄色),这很糟糕。

这就是为什么我想在很久以前制作 IE 为 mouseovermouseout 制作的东西:mouseentermouseleave(它们只触发一次)。对于拖动事件,同样适用:它们应该以完全相同的方式只触发一次。 JS 库通过使用 Event.fromElementEvent.toElement(并将它们与事件所有者元素进行比较)来欺骗这些 IE 事件。 (有关详细信息,请参阅 jQueryMootools 来源。)

要使拖动事件相同,我需要相同的 fromElementtoElement。你可以在 Fiddle 中看到,我试过了,但我找不到它们。

有人知道他们在哪里吗?为什么它们不可用?

我主要使用 Chrome,它在 dragenter 事件中没有 fromElement,但是 toElementdragleave 事件中。在 Firefox 中情况稍差(但更合乎逻辑):两者都是空的。

非常欢迎任何想法。

编辑
a little more debugging之后我发现 dragleave 中的 Chrome 的 toElement 并不总是正确的。它永远不会比this“更大”,但有时应该是:当我将字段集 (this) 保留为其父表单 (toElement) 时.当我这样做时,thistoElement 都是字段集(这是不正确的,对吧?)。

编辑 解决方案:
我最终得到了这样的结果:http://jsfiddle.net/rudiedirkx/Lwd3md71/它忽略事件中的元素,并使用事件坐标来查找鼠标下的元素。为了使其在每个动画帧最多触发一次,它使用 requestAnimationframe,这会导致 31-59 fps。

最佳答案

Firefox 提供了 relatedTarget 事件属性,但 Chrome 和 Safari 没有。可悲的是,这个问题已经开放了几年 Chrome bug还有这个Webkit bug .

编辑:该问题已在 Chrome 中修复。

关于javascript - dragenter/dragover 事件中没有 Event.fromElement 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8547733/

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