Short and sweet, I have this on a page and it works.
WHen the page is loaded via fetch it doesn’t do anything.
How can I adjust it so it works in this way?
[code]
document.querySelectorAll(“.drop-zone__input”).forEach(inputElement =>{
var dropZoneElement = inputElement.closest(“.drop-zone”);
dropZoneElement.addEventListener(“click”, e =>{
inputElement.click();
})
inputElement.addEventListener(“change”, e=>{
if (inputElement.files.length){
updateThumbnail(dropZoneElement, inputElement.files[0])
}
dropZoneElement.classList.remove(“drop-zone–over”);
})
dropZoneElement.addEventListener(“dragover”, e=>{
e.preventDefault();
dropZoneElement.classList.add(“drop-zone–over”);
})
var dropZoneElement = inputElement.closest(“.drop-zone”);
[“dragleave”, “dragend”].forEach(type =>{
dropZoneElement.addEventListener(type, e =>{
dropZoneElement.classList.remove(“drop-zone–over”);
})
})
dropZoneElement.addEventListener(“drop”, e =>{
e.preventDefault();
if (e.dataTransfer.files[0].type.startsWith(“image/”)) {
/* Is a Image */
if (e.dataTransfer.files.length){
inputElement.files = e.dataTransfer.files;
updateThumbnail(dropZoneElement, e.dataTransfer.files[0]);
}
dropZoneElement.classList.remove(“drop-zone–over”);
} else {
/* Not a Image */
dropZoneElement.querySelector(“.drop-zone__prompt”).innerHTML = “Not a image file”;
}
})
})
function updateThumbnail(dropZoneElement, file){
let thumbnailElement = dropZoneElement.querySelector(“.drop-zone__thumb”);
if (dropZoneElement.querySelector(“.drop-zone__prompt”)){
dropZoneElement.querySelector(“.drop-zone__prompt”).remove;
}
if (!thumbnailElement){
thumbnailElement = document.createElement(“div”);
thumbnailElement.classList.add(“drop-zone__thumb”);
dropZoneElement.appendChild(thumbnailElement);
}
thumbnailElement.dataset.label = file.name;
const reader = new FileReader;
reader.readAsDataURL(file);
reader.onload = () =>{
thumbnailElement.style.backgroundImage = `url(‘${ reader.result }’)`;
}
}