【发布时间】:2013-05-25 05:55:00
【问题描述】:
我刚刚发现在使用 HTML5 拖放时 - 尝试使用鼠标滚轮或鼠标垫滚动页面将不起作用,并且不会调用 onmousewheel 事件的侦听器。
作为示例,请参见此处: http://jsfiddle.net/92u6K/2/
jQuery
var $dragging = null;
$('.item').bind('dragstart', function(e) {
$dragging = $(e.currentTarget)
});
$('.item').bind('dragover', function(e) {
e.preventDefault();
e.stopPropagation();
});
$('.item').bind('drop', function(e) {
e.preventDefault();
e.stopPropagation();
$dragging.unbind();
$dragging.insertBefore($(e.currentTarget));
});
(该示例显示了 20 个带有滚动条的 div,因此您可以尝试 拖动项目并尝试同时滚动屏幕)
我发现几年前 FireFox 存在一个漏洞: https://bugzilla.mozilla.org/show_bug.cgi?id=41708
有人创建了一个扩展来支持这种行为: https://addons.mozilla.org/en-US/firefox/addon/drag-to-scroll-reloaded/
我在 Chrome 中找不到任何类似的错误。是否有适用于 Chrome 的解决方案?
编辑:这在 Safari 中确实有效,因此该行为存在于 Chrome 和 Firefox 中。
【问题讨论】:
-
您对拉动靠近底部的 div 使其滚动不满意?设计就是这样。
-
你能提供一个链接吗?我想不出这是什么原因。我刚刚发现在 Safari 中可以进行拖动和滚动。
-
我找到了解决方案:jQueryDndPageScroll
-
大多数关于滚动拖放的可用建议似乎早于现代浏览器。 OP 关于浏览器特定答案的注释应标记为正确答案。 Firefox 的插件完全按预期工作......不是一行代码。
-
在我的例子中,有一个带有
pointer-events: none的覆盖元素阻止了在 Chrome 中拖动时滚动
标签: javascript html drag-and-drop