2012-08-04 39 views
7

這是小提琴:http://jsfiddle.net/MZ9Xm/當我點擊畫布並拖動鼠標時,光標變爲文本選擇光標。我怎樣才能防止這一點?

注意:以下情況發生在Chrome 22.0.1221.1中,但不在Firefox 14.0.1中。 [Ubuntu linux]

將鼠標移至頂部畫布,然後按住鼠標按鈕。拖動鼠標,光標將變爲文本選擇鼠標光標(I-bar)。如果頁面上沒有其他元素,則不會發生這種情況。

我搞砸了設置用戶選擇爲無,但沒有任何運氣。

+0

鏈接[此問題](http://stackoverflow.com/q/4945874/94197),一些評論討論這個錯誤。 – 2013-05-12 11:56:17

回答

23

您可以在畫布中綁定mousedown事件以防止默認行爲。

喜歡的東西:

// with jQuery 
$("#canvasId").mousedown(function(event){ 
    event.preventDefault(); 
}); 

// without jQuery 
document.getElementById("canvasId").onmousedown = function(event){ 
    event.preventDefault(); 
}; 

這裏是更新的小提琴:http://jsfiddle.net/MZ9Xm/1/

您需要測試這個,看看是否有你在做什麼一些副作用。

3

您是否嘗試過使用CSS cursor property

canvas { 
    cursor: pointer; 
} 

它應該顯示默認光標。

+0

是的,我試過但沒有骰子。在小提琴中嘗試一下。光標仍然變爲文本選擇光標。 (在Chrome 22.0.1221.1中,我根本不需要做任何事情來使它與Firefox 14.0.1兼容。) – shino 2012-08-04 02:12:42

+0

它應該是一個Chrome bug ... 無論如何,它們在[this線程](http://stackoverflow.com/questions/2659999/html5-canvas-hand-cursor-problems),似乎他們解決了它。 – 2012-08-04 02:21:00

+0

太棒了!我在那裏找到了答案(這是達蒙的回答)。我不確定這裏的協議。我想如果你改變這個答案來鏈接到達蒙的​​話,我會接受嗎? – shino 2012-08-04 02:27:01

1

試試這個:

var canvasEls = document.getElementsByTagName('canvas'), 
    preventHl = function() { return false; }, 
    i = 0; 

while (i < canvasEls.length) { 
    canvasEls[i].onmousedown = preventHl; 
    i += 1; 
} 

返回false將阻止默認動作,如發生突出。

相關問題