0

HTML5ファイルのアップロードを作成していますが、ユーザーがウィンドウ上でファイルをドラッグしたときに、dragenterを起動させたいと考えています。アイデアは、dragenterがライトボックススタイルのオーバーレイをトリガーし、ドロップゾーンを表示することです。

これが私のコードです。(jQuery)

$(window).bind('dragenter', function (e) {
    e.stopPropagation();
    e.preventDefault();
    $('#uploadWrapper').show();
}).bind('dragexit', function (e) {
    e.stopPropagation();
    e.preventDefault();
    $('#uploadWrapper').hide();
});

これは正常に機能しますが、ユーザーが画像または一部のテキストを取得してドラッグすると、dragenterイベントもトリガーされます。何がドラッグされているかを知る方法はありますか?アップロードする実際のファイルだけがオーバーレイを表示するトリガーになりますか?

ありがとう..

4

1 に答える 1

3

次のようなものが機能するはずだと思います。(Operaに適しているとは思いませんが。)

function DraggedFiles(e)
{
    for (n in e.dataTransfer.types)
    {
        if (e.dataTransfer.types[n] === "Files") return true;
    }

    return false;
}

次に、dragEnterイベントに次を追加します。

if (DraggedFiles(e))
{
    // files were dragged onto here
} else {
    // something other than files were dragged
}

チェックを行い、アクション/非アクションを実行する場所。

于 2011-12-22T00:37:00.670 に答える