GWTでのmikeとwaitingforatrainの回答の可能な実装。 HTMLのheadで は、マウスアップイベント(JavaScriptコード)を管理:
var mouseUpHook = false;
$(document).mouseup(function() {
if (mouseUpHook) {
mouseUpHook(null);
mouseUpHook = false;
}
});
は、カスタムウィジェットクラスはMouseDownHandlerとMouseUpHandlerを実装し、マウスイベント(Javaコード)を受け取るためにあなたのコンストラクタでこれらの行を追加してみましょう:
addDomHandler(this, MouseDownEvent.getType());
addDomHandler(this, MouseUpEvent.getType());
最後に、カスタムウィジェットクラス(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
*重要*これは、テキストが選択されているときは機能しません(少なくともChromeではドラッグイベントとして扱われるため)。回避策については、私の答えを参照してください – bcoughlan