【问题标题】:Why does my custom drag and drop script fail?为什么我的自定义拖放脚本失败?
【发布时间】:2008-12-01 15:34:21
【问题描述】:

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

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

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

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

编辑:Chrome 和 Safari 工作。

编辑:使链接脱机,正在开发新版本。

【问题讨论】:

  • 只是为了让您知道它适用于 Chrome。
  • 哦,谢谢,没试过。 Safari 也可以。
  • 既然您已删除链接,您的问题并不是很有帮助。请在您的帖子中提供来源,以便其他人可以像您一样从社区中受益。

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


【解决方案1】:

如果你要问的话,首先这在 FF3 中对我有用。

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

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

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

【讨论】:

  • 具体问题请参见第二段,第一次单击+拖动:ok,第二次单击+拖动:事件触发 bude 不会在 buttonup 上停止,第三次及更多单击:ok。你确定它在你的FF3中有效吗?因为它仍然不在我的。
  • 是的,def 可以工作:Mozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4 很高兴你让它工作.
猜你喜欢
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
相关资源
最近更新 更多