2016-01-08 38 views
1

所以我在樹中有索姆項目。即時通訊使用GWT及其庫來實現拖放使用本地JavaScript作爲即時通訊,它的庫不適用於我。 樹應該支持複製項目(將項目拖放到另一個項目中)並重新排序項目(拖動項目和拖放項目)。我試圖根據鼠標位置確定這個動作,但問題是在拖動過程中指針會一直閃爍,例如在「手形」圖標和「加號」圖標之間切換。這是林在做第一個原型只是CSS變化:拖動事件期間鼠標指針始終閃爍

$doc.TreeOnReorderOver = function(ev) { 
     ev.preventDefault(); 
     var rect = ev.target.getBoundingClientRect(); 
     var top = rect.top; 
     var bottom = rect.bottom; 
     var height = bottom - top; 
     ev.target.style.cursor='none'; 
     if(ev.clientY >= top && ev.clientY < top + height/4) { //reorder top 

       ev.target.style.backgroundColor = 'transparent'; 

       ev.target.style.borderStyle = 'solid none none none'; 
       ev.target.style.borderWidth = '3px'; 
       ev.target.style.borderColor = '#D1E4EB'; 
     } 
     if(ev.clientY >= top + height/4 && ev.clientY < bottom - height/4) { //drop in 
       ev.target.style.border = 'none'; 
       ev.target.style.backgroundColor = '#D1E4EB'; 
     } 
     if(ev.clientY >= bottom - height/4 && ev.clientY < bottom) { //reorder bottom 
       ev.target.style.backgroundColor = 'transparent'; 

       ev.target.style.borderStyle = 'none none solid none'; 
       ev.target.style.borderWidth = '3px'; 
       ev.target.style.borderColor = '#D1E4EB'; 
     } 

    }; 

任何想法如何解決這個問題?

+0

java與此有什麼關係? – rottenoats

+0

這只是一個澄清,即時通訊使用本機JavaScript。所以沒有框架和庫相關的建議對我有好處 – Ziker

+0

Java和Javascript不是一回事。我爲你刪除了Java標籤。使用[javascript]標記顯示您正在使用原生javascript。 – rottenoats

回答

0

這個問題實際上非常流行。你設置你的光標移動到沒有要移動的對象上的指針:

ev.target.style.cursor='none'; 

所以只要你的鼠標懸停在目標(我猜它的對象要拖動),它贏得沒有指針。

當您拖動對象時,光標先移動(懸停在其他元素上),然後將對象移動到光標的位置。這會導致您的光標切換回指針。

嘗試改爲在拖動的持續時間內設置document.body.style.cursor='none';