为什么我的自定义拖放脚本失败?

时间:2008-12-01 15:34:21

标签: javascript firefox javascript-events drag-and-drop no-framework

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

我只是陷入了一个奇怪的错误。当我第一次拖动div时,它可以正常工作。当我第二次拖动它时,释放按钮后它不会粘住,我必须再次单击才能将其关闭。第三次和随后的拖累工作再次完美无缺(!?!)。

请参阅[原始页面] [1](正如我刚才所说,FireFox),了解会发生什么。完整的事情是作为div使用document.captureEvents(Event.MOUSEMOVE)进行中间运动的两个事件(onmousedown和onmouseup)。脚本可以在[这里] [2]找到(忽略底部的ajax部分,它准备了一些额外的技巧,如果我把它拿出来就会留下bug)。

如果您在过去遇到过类似的事情,或者您在某个地方看到错误,请告诉我。我知道可能有更好的方法来解决整个事情,但我特别想找到一种方法来使我的方法有效。

感谢您的时间,

麦克

编辑:Chrome和Safari工作。

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

1 个答案:

答案 0 :(得分:2)

首先,如果这就是你要问的话,这对我来说在FF3中起作用。

这不是你想听到的,但我强烈建议你从mootools或jquery或类似的东西中选择DnD方法。从效率的角度来看,DnD编码很糟​​糕(我自己完成了几次),如果你没有能力(这里没有冒犯意味着)解决上面出现的众多错误,那将是一个巨大的错误与现成的强大成熟实施方案相比,您的时间消耗殆尽。 很难做到。

如果你继续使用自己的代码(作为练习或骄傲 - 我可以理解:) :)这种问题通常是由于某个事件没有被捕获到你认为是因为其他一些事件首先被阻塞,一个标志没有被设置在你认为它的位置,或者(或者因为)一个错误,它会在意外的点突破你的代码。通过注销事件触发器,尝试并逻辑地跟踪发生的事情。

如果您可以定义如何它没有更详细地工作,我可能能够进一步追踪它(因为我似乎无法复制),但我建议您探索其中的好处一个坚实的图书馆。