web-dev-qa-db-ja.com

ドロップイベントが発生しないchrome

ドロップイベントは私が期待するときにトリガーされていないようです。

ドラッグされている要素がターゲット要素の上にリリースされたときにドロップイベントが発生すると仮定しますが、そうではないようです。

私は何を誤解していますか?

http://jsfiddle.net/LntTL/

$('.drop').on('drop dragdrop',function(){
    alert('dropped');
});
$('.drop').on('dragenter',function(){
    $(this).html('drop now').css('background','blue');
})
$('.drop').on('dragleave',function(){
    $(this).html('drop here').css('background','red');
})
78
Mild Fuzz

Div要素でドロップイベントを発生させるには、ondragenterおよびondragoverイベントをキャンセルする必要があります。 jqueryと提供されたコードを使用して...

$('.drop').on('drop dragdrop',function(){
    alert('dropped');
});
$('.drop').on('dragenter',function(event){
    event.preventDefault();
    $(this).html('drop now').css('background','blue');
})
$('.drop').on('dragleave',function(){
    $(this).html('drop here').css('background','red');
})
$('.drop').on('dragover',function(event){
    event.preventDefault();
})

詳細については、 MDNページ をご覧ください。

170
iamchris

dragoverイベントでevent.preventDefault()を実行するだけで済みます。これを行うと、dropイベントが発生します。

Dropイベントを発生させるには、overイベント中にdropEffectを割り当てる必要があります。そうしないと、ondropイベントがトリガーされません。

$('.drop').on('dragover',function(event){
    event.preventDefault();
    event.dataTransfer.dropEffect = 'copy';  // required to enable drop on DIV
})
// Value for dropEffect can be one of: move, copy, link or none
// The mouse icon + behavior will change accordingly.
0
bob