Me gustaría usar la API del archivo html5, en combinación con la funcionalidad de arrastrar y soltar externa (arrastrar un archivo externo a un lugar designado y capturar su contenido) y jquery. He encontrado un ejemplo de trabajo no jQuery: (html5 demo: file api)ejemplo de archivo de html5 con jquery?
var drop = document.getElementById('drop');
drop.ondragover = function() {this.className = 'focus'; return false;};
drop.ondragend = function() { this.className = ''; return false; };
drop.ondrop=function(e) {
this.className = '';
e.preventDefault();
var file = e.dataTransfer.files[0];
var reader = new FileReader();
reader.onload = function (evt) {
console.log(evt.target.result);
}
reader.readAsText(file);
};
Esto funciona bien. Ahora me gustaría hacer esto más de una jquery-ish y yo intentado:
$("#drop").bind('ondragover',function() {this.addClass('focus'); return false;})
.bind("ondragend",function() { this.removeClass('focus'); return false;})
.bind("ondrop",function(e) {
this.removeClass("focus");
e.preventDefault();
var file = e.dataTransfer.files[0];
var reader = new FileReader();
reader.onload = function (evt) {
console.log(evt.target.result);
}
reader.readAsText(file);
});
Pero eso no funciona, ninguno de los eventos binded parece que se desencadenó. También traté de perder la parte "activada" para los nombres de los eventos, pero eso tampoco funciona. Esperemos que alguien aquí pueda encender una luz?
respetos, jeroen.
sí que era estúpido (el $ (this)). De todos modos, para ir a jquery también debo descomprimir el evento original haciendo e.originalEvent.dataTransfer. Gracias por su respuesta. –