GWT中可能實現的mike和waitingforatrain的答案。 在HTML頭管理鼠標向上事件(JavaScript代碼):
var mouseUpHook = false;
$(document).mouseup(function() {
if (mouseUpHook) {
mouseUpHook(null);
mouseUpHook = false;
}
});
讓你自定義的Widget類實現MouseDownHandler和MouseUpHandler,並在構造函數中添加這些行接收鼠標事件(java代碼):
addDomHandler(this, MouseDownEvent.getType());
addDomHandler(this, MouseUpEvent.getType());
最後,添加這些方法在自定義Widget類(Java和JavaScript代碼):
@Override
public void onMouseUp (MouseUpEvent event) {
removeMouseUpHook();
// ... do something else
}
private native void hookMouseUp() /*-{
$wnd.$('body').addClass('noselect');
var myThis = this;
$wnd.mouseUpHook = function() {
[email protected]::onMouseUp(Lcom/google/gwt/event/dom/client/MouseUpEvent;)(null);
};
}-*/;
private native void removeMouseUpHook() /*-{
$wnd.$('body').removeClass('noselect');
}-*/;
@Override
public void onMouseDown (MouseDownEvent event) {
hookMouseUp();
// ... do something else
event.preventDefault();
}
最後一行是有用的,以防止圖像拖動。事實上,用戶選擇:沒有不足。
工程就像一個魅力,謝謝!我掙扎了好幾個小時。 – Duopixel 2010-11-30 02:34:04
*重要*選擇文本時至少不能使用(至少在Chrome中,因爲它將被視爲拖動事件)。看到我的答案下面的解決方法 – bcoughlan 2011-03-16 22:55:52