Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.02.2013, 09:30
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Drug n Drop на форму
Господа, буду признателен если кто нибудь просветит меня на предмет эвентов сабжа и их свойств.

Ситуация такая : есть поле в которое надо бросить файлы с определенными расширениями, а прочите за борт. Здесь все просто, нужные файлы отсортировываются, предупреждение о несоответствии всплывает когда файл бросается.
Но задача в том чтобы до того как элемент бросили, он бы вошел на поле для дропа и проверил расширение файла который тащит курсор и соответствено курсор сменился на знак условно "запрещающий дроп"

Подскажите,куда копать,может решение есть готовое или мысли какие?
Ответить с цитированием
  #2 (permalink)  
Старый 01.02.2013, 09:37
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от krasovsky
Подскажите,куда копать,может решение есть готовое или мысли какие?
Т.е. ты серьёзно считаешь что твоего пространного описания вполне достаточно для каких-то советов?

Хоть бы тестовый пример какой сделал...
Ответить с цитированием
  #3 (permalink)  
Старый 01.02.2013, 10:12
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

<marquee>Я принимаю только image/jpeg <img src="http://javascript.ru/forum/images/smilies/wink.gif" /></marquee>
<script>
document.addEventListener('dragover', function(e) {
    var dataTransfer = e.dataTransfer;
    var accept = Array.prototype.some.call(dataTransfer.items, function(item){
        return item.kind == 'file' && item.type == 'image/jpeg';
    });
    dataTransfer.dropEffect = accept ? 'copy' : 'none';
    e.preventDefault();
});
</script>
Ответить с цитированием
  #4 (permalink)  
Старый 01.02.2013, 11:37
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Ну вот человеку вполне хватило!) За что ему огромное спасибо!
Ответить с цитированием
  #5 (permalink)  
Старый 01.02.2013, 11:45
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от krasovsky
Ну вот человеку вполне хватило!)
У него бубен новый...
Ответить с цитированием
  #6 (permalink)  
Старый 01.02.2013, 14:29
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

var t = this;
                    t.addEventListener('dragover',function(e){
                        var data = e.dataTransfer;
                        console.log(data.items);
                        if (data.items.length > 1) {
                            data.dropEffect = 'none';
                        }
                        else if (data.items.type == 'image/jpeg') {
                            data.dropEffect = 'copy';
                        }
                        else {
                            data.dropEffect = 'none';
                        }

                    })


Вот что у меня получилося. Но не работает главное - выборка по расширению, неврубаюсь почему
Ответить с цитированием
  #7 (permalink)  
Старый 01.02.2013, 20:24
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Потому что обработчик dragover не имеет доступа ни к содержимому файлов (боже упаси!), ни к их именам.

Если хотите принимать только файлы, делайте еще проверку item.kind == 'file'.
И разве свойство items.type определено? Может items[0].type ?
Ответить с цитированием
  #8 (permalink)  
Старый 02.02.2013, 21:10
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Сообщение от danik.js Посмотреть сообщение
Потому что обработчик dragover не имеет доступа ни к содержимому файлов (боже упаси!), ни к их именам.

Если хотите принимать только файлы, делайте еще проверку item.kind == 'file'.
И разве свойство items.type определено? Может items[0].type ?
Спасибо что просвятили! Я так понимаю,ни dragover ни другие подобные обработчики (html 5 ) доступа именам объектов не имеют?
Ответить с цитированием
  #9 (permalink)  
Старый 02.02.2013, 21:28
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

http://dev.w3.org/html5/spec-preview/dnd.html#dndevents

Вот тут в табличке видно что доступ к объектам есть только на ondrop. Во всех остальных случаях - Protected Mode. Оно и понятно: пользователь ведь может только "мимо проносить" файл, поэтому доступ появляется только когда он уже бросил его.
Ответить с цитированием
  #10 (permalink)  
Старый 03.02.2013, 10:48
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Сообщение от danik.js Посмотреть сообщение
http://dev.w3.org/html5/spec-preview/dnd.html#dndevents

Вот тут в табличке видно что доступ к объектам есть только на ondrop. Во всех остальных случаях - Protected Mode. Оно и понятно: пользователь ведь может только "мимо проносить" файл, поэтому доступ появляется только когда он уже бросил его.
Спасибо в который раз. Буду учить англицкий чтоб лишний раз не спрашивать.
Поставил бы вам еще плюс, но ограничения форума не позволяют

В любом случае я dataTransfer я разобрался.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли передать файл из формы в форму? vuler Общие вопросы Javascript 3 01.03.2012 12:42
Drag & Drop с несколькими элементами Katz Общие вопросы Javascript 1 29.07.2011 13:01
Drug and Drop mgramin Элементы интерфейса 4 28.06.2011 16:05
Передача данных из формы/в форму. Катерина Общие вопросы Javascript 0 30.01.2010 18:01
Java script drug & drop MikeJn Общие вопросы Javascript 6 15.08.2008 13:29