Отключить перетаскивание для текста - PullRequest
0 голосов
/ 25 марта 2019

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

$(document).on("dragenter", "#element", function(event){
    event.preventDefault();

    // Check if we are dragging text

    if(is_text){ // <- HERE
        console.log("dragging text!");
    }else{
        console.log("dragging file!");
    }
});

Я хочу обнаружить, что перетаскиваемый объект не является текстом, поэтому предыдущий console.log не запустился бы, если бы это было.

ОБНОВЛЕНИЕ И РЕШЕНИЕ:

var dragging_text = false;

$(window).on("dragstart", function(event){
    dragging_text = true;
    console.log("dragstart");
});

$(document).on("dragenter", "#element", function(event){
    event.preventDefault();

    if(dragging_text){
        console.log("NO, dragging text!");
    }else{
        console.log("OK, dragging file!");
    }
});

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Это поможет вам узнать:

 var dragging_text = false;

$(window).on("dragstart", function(event){
    dragging_text = true;
    console.log("dragstart");
});

$(document).on("dragenter", "#element", function(event){
    event.preventDefault();

    if(dragging_text){
        console.log("NO, dragging text!");
    }else{
        console.log("OK, dragging file!");
    }
    dragging_text = false;
});
0 голосов
/ 25 марта 2019

Вам необходимо проверить DataTransfer

$(document).on("dragenter", "#element", function(event){   
    if(event.dataTransfer.files.length > 0){ // <- HERE
        console.log("dragenter");
    }else {
        event.preventDefault();
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...