2012-01-20 130 views
9

在Chrome浏览器(我在Win 7上使用16.0.912.75 m版本)时,我发现无论设置了什么光标,只要按住鼠标左键并移动光标,则光标类型将更改为text(即使页面上没有任何文本)。铬错误?鼠标向下移动光标+移动

这是一个错误?有谁知道如何解决它,因为它使我的拖放工具看起来有点傻!

的jsfiddle:http://jsfiddle.net/KJfbs/

编辑

正如下面@davgothic回答,加入-webkit-user-select: none;会解决这个问题的时候没有文字。但是,如果我们确定元素的位置并将文本置于其后面,则问题仍然存在。

的jsfiddle:http://jsfiddle.net/KJfbs/2/

回答

10

尝试增加-webkit-user-select: none;的CSS为元素,以防止文本选择。

例子:http://jsfiddle.net/KJfbs/1/

个人而言,我还要补充这些...

-webkit-user-select: none; 
-khtml-user-select: none; 
    -moz-user-select: none; 
    -ms-user-select: none; 
    -o-user-select: none; 
     user-select: none; 

...跨浏览器兼容。

+1

+1 - 感谢,但这工作在我的问题的例子。不幸的是,当div完全位于文本之上时,这似乎不起作用。你有什么想法,为什么这可能是? –

+0

我不太确定,作为最后一招,你可以对包含文本的元素设置“-webkit-user-select:none;”。用户将失去选择文本的能力。 [这是一个例子](http://jsfiddle.net/KJfbs/3/)。 –

+0

是的,我想这是一个选项。谢谢 - 我会等到看到有人能否在我接受你的答案之前就我的编辑提供建议。 –

0

我认为与-webkit-user-select:none;如果您在页面中添加其他内容,问题仍然存在。例如:http://jsfiddle.net/KJfbs/237/

无论如何,我认为jQuery的的preventDefault解决了在任何情况下,问题: http://jsfiddle.net/KJfbs/241/

的preventDefault避免默认行为是改变光标文字。然后我可以控制并放置任何我想要的游标:$(this).css(“cursor”,“wait”);

JQUERY:

$(function(){ 
    $('#lime').mousedown(function(e) { 
     e.preventDefault(); 
     $(this).css("cursor","wait"); 
    }).on('mouseup mouseleave', function() { 
     $(this).css("cursor","default"); 
    }); 
}); 

HTML:

<div id="lime"></div> 
<p>Lorem ipsum dolor sit amet</p> 

CSS:

#lime { 
    background-color: lime; 
    height: 100px; width: 300px; 
    cursor: wait; 
    position: absolute; 
    top: 0; left: 0; 
}