Fix: prevent fileInput.js from adding event listeners more than once (#2365)

Fix fileInput.js adding event listeners more than once

- Fix a bug that caused fileInput.js to add event listeners more than once per HTML file as it's included in fileSelector fragment in fragments/common.html thus it's being loaded N times where N is the number of file selectors / custom file chooser / file input elements per HTML file, which resulted in each event actions being executed N times as well, which was prevalent in drag and drop operations such as dragging and dropping a file called y.png, it would be duplicated N times (as in /sign path).
This commit is contained in:
Omar Ahmed Hassan 2024-12-02 19:41:11 +02:00 committed by GitHub
parent db02fba31f
commit 04ccdf6f76
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,6 +1,10 @@
document.addEventListener("DOMContentLoaded", function () { let isScriptExecuted = false;
if (!isScriptExecuted) {
isScriptExecuted = true;
document.addEventListener("DOMContentLoaded", function () {
document.querySelectorAll(".custom-file-chooser").forEach(setupFileInput); document.querySelectorAll(".custom-file-chooser").forEach(setupFileInput);
}); });
}
function setupFileInput(chooser) { function setupFileInput(chooser) {
const elementId = chooser.getAttribute("data-bs-element-id"); const elementId = chooser.getAttribute("data-bs-element-id");