আমার একটি HTML object( embed) রয়েছে যা পৃষ্ঠার প্রস্থ এবং উচ্চতা পূরণ করে f @ ডিজিটাল-প্লেনের উত্তরটি সাধারণ ওয়েব পৃষ্ঠাগুলিতে কাজ করে তবে ব্যবহারকারী এম্বেড থাকা কোনও বস্তুর উপরে না যায়। সুতরাং আমার আলাদা সমাধান দরকার ছিল।
যদি আমরা ইভেন্ট ক্যাপচার পর্বটি ব্যবহার করতে স্যুইচ করি তবে এম্বেড হওয়া বস্তুটি তাদের গ্রহণের আগেই আমরা ইভেন্টগুলি পেতে পারি ( trueইভেন্ট শ্রোতার কলের শেষে মানটি লক্ষ্য করুন ):
// document.body or window
document.body.addEventListener("dragover", function(e){
e = e || event;
e.preventDefault();
console.log("over true");
}, true);
document.body.addEventListener("drop", function(e){
e = e || event;
e.preventDefault();
console.log("drop true");
}, true);
নিম্নলিখিত কোডটি ব্যবহার করা (@ ডিজিটাল-বিমানের উত্তরের উপর ভিত্তি করে) পৃষ্ঠাটি একটি টেনে আনার লক্ষ্য হিসাবে পরিণত হয়েছে, এটি ইভেন্টগুলি ক্যাপচারে অবজেক্ট এম্বেডগুলিকে বাধা দেয় এবং তারপরে আমাদের চিত্রগুলি লোড করে:
document.body.addEventListener("dragover", function(e){
e = e || event;
e.preventDefault();
console.log("over true");
}, true);
document.body.addEventListener("drop",function(e){
e = e || event;
e.preventDefault();
console.log("Drop true");
// begin loading image data to pass to our embed
var droppedFiles = e.dataTransfer.files;
var fileReaders = {};
var files = {};
var reader;
for (var i = 0; i < droppedFiles.length; i++) {
files[i] = droppedFiles[i]; // bc file is ref is overwritten
console.log("File: " + files[i].name + " " + files[i].size);
reader = new FileReader();
reader.file = files[i]; // bc loadend event has no file ref
reader.addEventListener("loadend", function (ev, loadedFile) {
var fileObject = {};
var currentReader = ev.target;
loadedFile = currentReader.file;
console.log("File loaded:" + loadedFile.name);
fileObject.dataURI = currentReader.result;
fileObject.name = loadedFile.name;
fileObject.type = loadedFile.type;
// call function on embed and pass file object
});
reader.readAsDataURL(files[i]);
}
}, true);
ম্যাকের ফায়ারফক্সে পরীক্ষিত।