我的应用程序有很多拖放功能。拖动时,我希望光标变为某个抓取光标。Internet Explorer和Firefox可以很好地做到这一点,但Chrome总是将光标改为文本光标。
发布于 2012-03-17 03:27:47
这些解决方案都不适合我,因为它的代码太多了。
我使用一个自定义的jQuery实现来执行拖动操作,在mousedown
处理程序中添加这一行代码就可以在Chrome中完成此操作。
e.originalEvent.preventDefault();
发布于 2012-10-18 22:59:20
如果要阻止浏览器选择元素中的文本并显示选择光标,可以执行以下操作:
element.addEventListener("mousedown", function(e) { e.preventDefault(); }, false);
发布于 2011-10-14 06:14:47
陷阱
您不能将
document.onselectstart = function(){ return false; };
进入你的"mousedown“处理程序,因为onselectstart已经被触发了。
解决方案
因此,要使其正常工作,您需要在mousedown事件之前执行此操作。我在mouseover事件中这样做了,因为一旦鼠标进入我的元素,我希望它是可拖动的,而不是可选择的。然后,您可以将
document.onselectstart = null;
调用mouseout事件。然而,这里有一个问题。拖动时,可能会调用mouseover/mouseout事件。为了应对这种情况,在你的拖动/鼠标按下事件中,将flag_dragging设置为true,并在拖动停止(mouseup)时将其设置为false。mouseout函数可以在设置之前检查该标志
document.onselectstart = null;
示例
我知道您没有使用任何库,但这里有一个可能对其他人有帮助的jQuery代码示例。
var flag_dragging = false;//counter Chrome dragging/text selection issue
$(".dragme").mouseover(function(){
document.onselectstart = function(){ return false; };
}).mouseout(function(){
if(!flag_dragging){
document.onselectstart = null;
}
});
//make them draggable
$(".dragme").draggable({
start: function(event, ui){
flag_dragging = true;
}, stop: function(event, ui){
flag_dragging = false;
}
});
https://stackoverflow.com/questions/2745028
复制相似问题