我想在一个包含子元素 input type "range" 的 div 上执行拖动操作,但由于其父 div 已经注册了拖动事件,在 FIREFOX 中我无法移动 range 元素,但它可以在 Chrome 中正常工作(为什么?请告诉我原因)。请提供解决方案。
http://jsbin.com/ASabAFuw/8/edit
看起来是浏览器的bug,在Firefox中,滑块甚至没有接收到dragstart
事件。如果有的话,您就可以防止冒泡。
但是,如果活动元素是输入框(也许您还需要检查链接或文本区域),则可以通过从dragstart
处理程序返回false来阻止拖放:
function dragStartCallback(event) {
if (document.activeElement.tagName == 'INPUT') {
return false; // block dragging
}
event.dataTransfer.setData('text', ' Dropped')
}
onSliderChange
调用了 event.preventDefault()
,所以当你在Chrome中释放鼠标按钮后,滑块仍然会继续移动,并在Firefox中恢复到先前的位置。
event.preventDefault()
最终解决了它。谢谢! - xpuu