HTML 5拖放与jQuery UI拖放相比的优势

28

我正在编写一个新的Web应用程序,需要支持页面元素的拖放操作(不是文件拖放)。

这个问题的答案

html5 vs jquery drag and drop

建议使用Modernizr检查浏览器是否支持HTML5拖放,如果支持,则使用该支持,否则回退到像jQuery UI这样的替代方案。

由于它们具有相当不同的模型,这意味着所有拖放代码都必须分别实现和测试(很少有共享实现)。只有当HTML5拖放具有重大的、影响用户体验的优势且回退到jQuery UI会提供降级体验时,才似乎有逻辑执行这个操作。

是否有实现两种变体的显著好处?


为什么要关闭投票?了解一下是否有我不知道的 HTML5 拖放功能的好处,这是否值得提供双重实现,这似乎是合理的。如果这不是一个有效的问题,请分享原因。 - Eric J.
Eric:对我来说,你想要什么样的答案并不清楚。这是一个“利弊如何”或“我应该在我的项目中使用什么”的问题。你知道HTML5拖放不是跨浏览器的,你知道如何回退到js实现-这里有什么技术问题吗?我承认,我可能错过了它。 - Wesley Murch
@Madmartigan:不,我是在问HTML5拖放是否有比jQuery UI拖放更好的功能。我知道我必须实现jQuery版本,因为并非所有浏览器都支持HTML5。我想知道是否有利于HTML5版本的优点(更快,更流畅等),这些优点可能需要额外的开发工作来实现jQuery UI。我在网络上看到的答案似乎是“两者都要做”,但根据我目前所知,这并没有意义。 - Eric J.
5个回答

12

我猜最终jQuery会利用内置的浏览器功能,比如html 5拖放。

如果不同的浏览器实现方式不同... jQuery会处理它。


抱歉给你点了踩,我相信你是想说 jQuery-ui 而不是 jQuery。 http://wiki.jqueryui.com/w/page/12137878/Draggable - jozecuervo

12

我认为 HTML5 拖放与 jQuery 相比最大的优势在于消除了庞大的 jQuery UI 库和 css 文件。

话虽如此,目前存在浏览器兼容性问题,这使得 jQuery 非常必要。


同时也要考虑速度。在页面上使用大量可拖动元素的jQuery UI dnd操作会变得相当缓慢。转而使用HTML5 dnd后,页面响应速度更快了。但是与jQUI相比,HTML5 dnd API存在一些奇怪的问题,并且缺少很多功能。 :( - Alex

8

好的,我已经实现了这两种方法,我建议使用 mousedown/mousemove 事件来手动实现(基本上就像jquery UI一样)。

我同意jQuery UI可能有点沉重,但是有很多教程/代码片段可以让你自己编写。

为什么我推荐手动方法而不是现代浏览器中的原生实现?因为html5 DnD [拖放] 太糟糕了!尽管对于当前的浏览器来说是新的,但它是建立在IE5旧版实现的基础之上。

如果你要在窗口之间或者从桌面传输数据,那么也许我会考虑使用html5 DnD ,因为它具有浏览器/操作系统钩子。但是,如果你只是在单个网页上移动DOM节点,请使用JS鼠标事件手动实现。

- Paul


11
您的意思是它很糟糕吗?您能否用技术术语来表达这个意思? - Chris Wesseling
好的,从技术上讲,HTML5的拖放功能实现得非常糟糕。我不想重复技术方面的解释,我会在谷歌上搜索“HTML5拖放问题”。好的,这里是前两个结果:http://www.quirksmode.org/blog/archives/2009/09/the_html5_drag.html和http://pxdraw.com/HTML5DragAndDropSucks.com/#slide12。 - Paul Maneesilasan
2
就我个人而言,在开始自己的实现之前,我已经阅读了第一个链接并感到后悔。这就是为什么我在这里发布,以避免其他开发人员将其拼凑在一起的痛苦。回顾过去,我相信 PKK 的动机也是如此,但像你们所有阅读这篇文章并仍然要自己实现 HTML5 DnD 一样,我也很固执 :) - Paul Maneesilasan

3
我特别回答有关dnd的问题,因为这似乎是你问的内容。我认为有些人将jQuery和jQueryUI混淆了。与jQuery一起使用本机HTML5 dnd是很好的组合,既具有性能又具有开发时间优势。由于dnd功能来自IE世界,浏览器支持在各个方面都相当不错(包括IE7,可能甚至更老)。使用jQuery为您提供了全部跨浏览器的 addClass(), removeClass()等工具,这是关键。
另一方面,jQueryUI提供了很多你可能不需要的功能。由于他们的dnd依赖于鼠标事件而不是本机的dnd,性能不会很好。不应将jQueryUI与jQuery混淆。 jQueryUI已经超过2.5年没有接收到任何重大更新!(是的,jQueryUI 1.8rc1是在2010年1月发布的)所以,仅仅说他们将来会添加本地支持并不简单,在他们更新的速度上我不会对此抱有太大希望。

0
我刚刚将一个脚本转换成使用基于HTML5的拖放排序脚本,而不是jQueryUI版本,因为当我尝试对其进行排序时,jQueryUI版本初始化需要19秒钟,而HTML5版本只需要0.19秒钟。
所以优势在于:速度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接