मैं उसी मुद्दे पर भाग गया, मैं ऊपर दिए गए समाधानों के माध्यम से लाल हो गया लेकिन उन्हें कोई भी अच्छा स्पष्टीकरण नहीं मिला कि वास्तव में क्या हो रहा था।
यह समाधान मैंने https://jsfiddle.net/r2wjp6u8/ लिखा है, DOM ट्री में कई बदलाव नहीं हैं, यह सिर्फ इनपुट फील्ड के मूल्यों को बदलता है। प्रदर्शन के पहलू से यह थोड़ा बेहतर होना चाहिए।
कड़ी से कड़ी: https://jsfiddle.net/r2wjp6u8/
<button id="btnSelectFile">Upload</button>
<!-- Not displaying the Inputfield because the design changes on each browser -->
<input type="file" id="fileInput" style="display: none;">
<p>
Current File: <span id="currentFile"></span>
</p>
<hr>
<div class="log"></div>
<script>
// Get Logging Element
var log = document.querySelector('.log');
// Load the file input element.
var inputElement = document.getElementById('fileInput');
inputElement.addEventListener('change', currentFile);
// Add Click behavior to button
document.getElementById('btnSelectFile').addEventListener('click', selectFile);
function selectFile() {
if (inputElement.files[0]) {
// Check how manyf iles are selected and display filename
log.innerHTML += '<p>Total files: ' + inputElement.files.length + '</p>'
// Reset the Input Field
log.innerHTML += '<p>Removing file: ' + inputElement.files[0].name + '</p>'
inputElement.value = '';
// Check how manyf iles are selected and display filename
log.innerHTML += '<p>Total files: ' + inputElement.files.length + '</p>'
log.innerHTML += '<hr>'
}
// Once we have a clean slide, open fiel select dialog.
inputElement.click();
};
function currentFile() {
// If Input Element has a file
if (inputElement.files[0]) {
document.getElementById('currentFile').innerHTML = inputElement.files[0].name;
}
}
</scrip>