考慮一下:火狐火災,不改變
<input type="file" id="filePicker">
<script>
document.getElementById('filePicker').onchange = function() {
alert('Hi!');
};
</script>
即使選擇相同的文件和filePicker
價值不會改變,你會看到提示框在Firefox。任何解決方案
考慮一下:火狐火災,不改變
<input type="file" id="filePicker">
<script>
document.getElementById('filePicker').onchange = function() {
alert('Hi!');
};
</script>
即使選擇相同的文件和filePicker
價值不會改變,你會看到提示框在Firefox。任何解決方案
使用一個臨時變量來保存你可以檢查你選擇一個文件,下一次的文件名的名字:
var filenameTemp = null;
document.getElementById('filePicker').onchange = function(e) {
var filename = e.target.value;
if (filename !== filenameTemp) {
filenameTemp = filename;
console.log('OK');
// other code
} else {
console.log('Not OK')
}
};
不錯的做法!謝謝! – Mori
運行下面的代碼片段。它會說「新文件!」當Chrome和Firefox都有新文件時。
var previousFile = {};
function isSame(oldFile, newFile) {
return oldFile.lastModified === newFile.lastModified &&
oldFile.name === newFile.name &&
oldFile.size === newFile.size &&
oldFile.type === newFile.type;
}
document.getElementById('filePicker').onchange = function() {
var currentFile = this.files[0];
if (isSame(previousFile, currentFile) === false) {
alert('New File!');
previousFile = currentFile;
}
};
<input type="file" id="filePicker">
只要保持前值的地方,並進行比較 - 如果它是一樣的新的,不容忽視。 – Piskvor
只需在變量中保存一個文件名的記錄,並檢查新值是否與舊值相同。如果不是,請運行代碼。 – Andy
@Piskvor:我不知道該怎麼做。 – Mori