首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >chrome在拖动时将光标设置为文本,为什么?

chrome在拖动时将光标设置为文本,为什么?
EN

Stack Overflow用户
提问于 2010-04-30 21:59:58
回答 6查看 23.4K关注 0票数 57

我的应用程序有很多拖放功能。拖动时,我希望光标变为某个抓取光标。Internet Explorer和Firefox可以很好地做到这一点,但Chrome总是将光标改为文本光标。

EN

回答 6

Stack Overflow用户

发布于 2012-03-17 03:27:47

这些解决方案都不适合我,因为它的代码太多了。

我使用一个自定义的jQuery实现来执行拖动操作,在mousedown处理程序中添加这一行代码就可以在Chrome中完成此操作。

代码语言:javascript
复制
e.originalEvent.preventDefault();
票数 75
EN

Stack Overflow用户

发布于 2012-10-18 22:59:20

如果要阻止浏览器选择元素中的文本并显示选择光标,可以执行以下操作:

代码语言:javascript
复制
element.addEventListener("mousedown", function(e) { e.preventDefault(); }, false);
票数 17
EN

Stack Overflow用户

发布于 2011-10-14 06:14:47

陷阱

您不能将

代码语言:javascript
复制
document.onselectstart = function(){ return false; };

进入你的"mousedown“处理程序,因为onselectstart已经被触发了。

解决方案

因此,要使其正常工作,您需要在mousedown事件之前执行此操作。我在mouseover事件中这样做了,因为一旦鼠标进入我的元素,我希望它是可拖动的,而不是可选择的。然后,您可以将

代码语言:javascript
复制
document.onselectstart = null;

调用mouseout事件。然而,这里有一个问题。拖动时,可能会调用mouseover/mouseout事件。为了应对这种情况,在你的拖动/鼠标按下事件中,将flag_dragging设置为true,并在拖动停止(mouseup)时将其设置为false。mouseout函数可以在设置之前检查该标志

代码语言:javascript
复制
document.onselectstart = null;

示例

我知道您没有使用任何库,但这里有一个可能对其他人有帮助的jQuery代码示例。

代码语言:javascript
复制
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;
    }
});
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2745028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档