Предотвратить перетаскивание локального кода / элементов от запуска Dragenter - PullRequest
0 голосов
/ 11 декабря 2011

Я собираюсь загрузить файл HTML5, и я хочу, чтобы драгентер срабатывал, когда пользователь перетаскивал файл через окно. Идея состоит в том, что dragenter активирует наложение в стиле лайтбокса, показывая зону перетаскивания.

вот мой код. (JQuery)

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

это работает нормально, но если пользователь берет изображение или некоторые тексты и перетаскивает его, это также вызывает событие dragenter. Есть ли способ, чтобы я мог сказать, что перетаскивается, чтобы только фактические файлы для загрузки вызывали триггер, показывающий оверлей?

Спасибо ..

1 Ответ

3 голосов
/ 22 декабря 2011

Я думаю, что-то вроде следующего должно работать;(Хотя я не думаю, что это удобно для 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
}

, где вы хотите сделать проверку иделать действие / бездействие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...