Tôi muốn sử dụng tệp api của html5, kết hợp với chức năng kéo thả n bên ngoài (kéo tệp ngoài vào một vị trí được chỉ định và nắm bắt nội dung của nó) và jquery. Tôi đã tìm thấy ví dụ không phải là câu hỏi làm việc: (html5 demo: file api)Ví dụ về tệp api của html5 với 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);
};
Điều này làm việc tốt. Bây giờ tôi muốn làm điều này thêm một jquery-ish và tôi đã thử:
$("#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);
});
Nhưng điều đó không có tác dụng, không có sự kiện ràng buộc nào dường như được kích hoạt. Tôi cũng đã cố gắng để mất phần "trên" cho các tên sự kiện nhưng điều đó cũng không hoạt động. Hy vọng rằng ai đó ở đây có thể tỏa sáng một ánh sáng?
liên quan, lỗ.
vâng đó là ngu ngốc (các $ (this)). Dù sao đi jquery tôi cũng phải giải nén sự kiện ban đầu bằng cách thực hiện e.originalEvent.dataTransfer. Cảm ơn câu trả lời của bạn. –