我使用普通的遺留GWT DnD而不是gwt-dnd庫(因爲我不需要DnD小部件,但數據很簡單,所以我想保持簡單)。
我可以用一個Image小部件來實現它。
然後我切換到HTML小部件,但然後拖動不起作用:沒有錯誤沒有什麼,只是拖動不再拖動。
代碼(這個問題是在拖部分,我列出的代碼只有這部分如下):GWT DragStartEvent vs MouseDownEvent
HTML theWidget = new HTML("some string"); // NOK : doesn't drag
// Image theWidget = new Image ("path/image.png"); // OK : does drag
theWidget.addDragStartHandler(new DragStartHandler() {
public void onDragStart(DragStartEvent event) {
event.setData(data, "some data");
}
});
有什麼不對?
看起來好像沒有DragStartEvent,因爲在點擊拖動並移動鼠標放下目標後,瀏覽器會選擇其中的內容(拖動開始拖放目標)。
爲了調查,我添加了一個MouseDownHandler,事實上是一個MouseDownEvent觸發。
所以問題是:如何控制GWT在DragStartEvent和MouseDownEvent之間觸發哪個事件?
什麼瀏覽器?你試過簡單的'preventDefault()''DragStartEvent'嗎? –
@ andrea-boscolo:我在Firefox和Chrome上進行了測試(可能相同:都包含webkit)。我想阻止MouseDown。我沒有得到你的建議:我怎麼能防止MouseDown - 假設然後我會得到DragStart - Tx – gerard
@ andrea-boscolo:我已經添加event.preventDefault();到我的MouseDownHandler。它不會阻止MouseDown觸發。但是沒有更多的從MouseDown到MouseUp的選擇。所以我的結論是,它可以防止在MouseDown之後觸發的默認操作。所以它不能解決我的問題,那就是避免這個MouseDown事件,而是使用DragStart代替。有時(不是很常見),當我在移動鼠標的「MouseDown」時,我得到一個DragStart事件。 – gerard