我正在编写一个新的Web应用程序,需要支持页面元素的拖放操作(不是文件拖放)。
这个问题的答案
建议使用Modernizr检查浏览器是否支持HTML5拖放,如果支持,则使用该支持,否则回退到像jQuery UI这样的替代方案。
由于它们具有相当不同的模型,这意味着所有拖放代码都必须分别实现和测试(很少有共享实现)。只有当HTML5拖放具有重大的、影响用户体验的优势且回退到jQuery UI会提供降级体验时,才似乎有逻辑执行这个操作。
是否有实现两种变体的显著好处?
我正在编写一个新的Web应用程序,需要支持页面元素的拖放操作(不是文件拖放)。
这个问题的答案
建议使用Modernizr检查浏览器是否支持HTML5拖放,如果支持,则使用该支持,否则回退到像jQuery UI这样的替代方案。
由于它们具有相当不同的模型,这意味着所有拖放代码都必须分别实现和测试(很少有共享实现)。只有当HTML5拖放具有重大的、影响用户体验的优势且回退到jQuery UI会提供降级体验时,才似乎有逻辑执行这个操作。
是否有实现两种变体的显著好处?
我猜最终jQuery会利用内置的浏览器功能,比如html 5拖放。
如果不同的浏览器实现方式不同... jQuery会处理它。
我认为 HTML5 拖放与 jQuery 相比最大的优势在于消除了庞大的 jQuery UI 库和 css 文件。
话虽如此,目前存在浏览器兼容性问题,这使得 jQuery 非常必要。
好的,我已经实现了这两种方法,我建议使用 mousedown
/mousemove
事件来手动实现(基本上就像jquery UI一样)。
我同意jQuery UI可能有点沉重,但是有很多教程/代码片段可以让你自己编写。
为什么我推荐手动方法而不是现代浏览器中的原生实现?因为html5 DnD [拖放] 太糟糕了!尽管对于当前的浏览器来说是新的,但它是建立在IE5旧版实现的基础之上。
如果你要在窗口之间或者从桌面传输数据,那么也许我会考虑使用html5 DnD ,因为它具有浏览器/操作系统钩子。但是,如果你只是在单个网页上移动DOM节点,请使用JS鼠标事件手动实现。
- Paul
addClass()
, removeClass()
等工具,这是关键。