私のアプリケーションはFFとIEで正常に動作しますが、Chromeでは予期しない方法で動作します。私はjqueryを使用して、チェス盤上のチェスの駒のドラッグアンドドロップ動作を実装しています。ヘルパーを使用すると、「クローン」オプションがChromeで誤った動作を引き起こすことがわかりました。正しい動作は次のとおりです。ピースは、少なくとも50%(デフォルトの交差許容値)オーバーラップする正方形にドロップする必要があります。Chromeの動作は次のとおりです。ピースは、接触する上部の正方形にドロップします。
$(".piece-draggable").draggable({
revert: true,
// with "helper" option set to "clone" the drop is incorrect: moving only the
// top of the king piece to g5
// it happens the king is misplaced to g6 (onDrop is called from g6).
// This behaviour affects only Chrome while FF works as expected.
// without using the helper, all browsers works fine
helper: "clone",
containment: ".board",
start: onDragStart,
stop: onDragStop
});
$(".square20").droppable({
drop: onDrop
});
function onDragStart(event, ui) {
$("#text").append("<p>start</p>");
$(this).css("opacity", "0.35");
$(ui.helper).css("opacity", "1");
}
function onDragStop(event, ui) {
$(this).css("opacity", "1");
$("#text").append("<p>stop</p>");
}
function onDrop(event, ui) {
//ui.draggable.draggable('disable');
//$(this).droppable('disable');
ui.draggable.position({
of: $(this),
my: 'center',
at: 'center'
});
ui.draggable.draggable('option', 'revert', false);
$("#text").append("<p>" + "drop " + $(this).attr("id") + "</p>");
}
$(".piece-draggable").draggable('enable');
$(".square20").droppable('enable');
これがjsfiddleの例です。g6の正方形に触れるだけで、黒い王をg5に移動してみることができます。王はg6に配置されます。
この厄介な問題をどのように修正できますか?