-1

我目前正在尝试编写自己的 JS 拖放脚本(出于好奇和无聊,我知道使用框架会容易得多)。我的目标是一个完全运行的 Firefox3 版本,IE 现在可以等待。

我刚刚陷入了一个奇怪的错误。当我第一次拖动 div 时,它工作正常。当我第二次拖动它时,松开按钮后它不会粘住,我必须再次单击才能将其放下。第三次和随之而来的阻力再次完美无瑕地工作(!?!)。

请参阅[原始页面][1](正如我所说,目前仅 FireFox)以了解会发生什么。整个事情是作为一个带有两个事件(onmousedown 和 onmouseup)的 div 完成的,使用 document.captureEvents(Event.MOUSEMOVE) 进行中间移动。该脚本可以在 [here][2] 中找到(忽略底部的 ajax 部分,它为一些额外的技巧做好了准备,如果我把它拿出来,这个错误仍然存​​在)。

如果您过去遇到过类似的事情,或者您在某处发现错误,请告诉我。我知道可能有更好的方法来解决整个问题,但我正在特别寻找一种方法来使我的方法发挥作用。

编辑:Chrome 和 Safari 工作。

编辑:使链接脱机,处理新版本。

4

1 回答 1

2

如果这就是你要问的,那么首先这对我在 FF3 中有效。

这不是您想听到的,但我强烈建议您从 mootools 或 jquery 或类似工具中选择 DnD 方法。仅从效率的角度来看,DnD 编码是一件可怕的事情(我自己做了几次),如果你没有能力(这里没有冒犯的意思)解决出现的众多错误,那将是一个巨大的与仅使用现成的强大成熟实施相比,会浪费您的时间。这一件很难的事情。

如果您继续使用自己的代码(作为练习或出于自豪 - 我可以理解 :) )这种问题通常是由于某个事件没有在您认为是因为其他事件而被捕获的结果首先,一个标志没有被设置在你认为的位置,或者(或因为)一个错误在你的代码中出现了意外的点。通过注销事件触发器,尝试从逻辑上跟踪正在发生的事情。

如果您可以更详细地定义 它是如何不工作的,我也许可以进一步追踪它(因为我似乎无法复制),但我确实建议您探索可靠库的好处。

于 2008-12-01T16:10:58.347 回答