Я работаю над обработкой изображений в браузере с помощью HTML5 и имею странную проблему в Firefox с обработчиком событий onload для класса File File Fileer (который работает правильно на chrome): файл обрабатывается должным образом во второй раз выбранных в форме.FileReader onload работает только во второй раз в Firefox?
Любая идея, как я могу заставить Firefox обрабатывать это событие в первый раз?
Пс: Я использую Linux, может быть, это актуально?
JSFiddle: https://jsfiddle.net/ow126vah/
Код:
var fileInput = document.getElementById('fileInput');
var fileDisplayArea = document.getElementById('fileDisplayArea');
fileInput.addEventListener('change', function(e) {
var file = fileInput.files[0];
var imageType = /image.*/;
if (file.type.match(imageType)) {
var reader = new FileReader();
reader.onload = function(e) {
var ctx = fileDisplayArea.getContext("2d");
// create a new image from user selected file
var img = new Image();
img.src = reader.result;
// set canvas size to image size
fileDisplayArea.width = img.width;
fileDisplayArea.height = img.height;
// scale and draw image with offset
ctx.drawImage(img, 0, 0);
}
reader.readAsDataURL(file);
} else {
alert("File not supported!");
}
})
<div>Select an image file:
<input type="file" id="fileInput">
</div>
<canvas id="fileDisplayArea"></canvas>
Взял время, чтобы понять, что вы имели в виду, но это работает. Благодаря! https://jsfiddle.net/ow126vah/3/ –
Точно то, что я хочу, спасибо Felix –
Ничего себе, это действительно очевидно, когда вы говорите это, и это работает. Вы знаете, почему FF работает по-другому в этом случае? Конечно, имеет смысл использовать img.onload в любом браузере, но он не нужен ни в каком другом браузере, а затем в FF. Они автоматически ждут загрузки изображения? –