HTML5 - перетащите JPG и получите его ширину

107
10

Я хочу получить ширину JPG после перетаскивания ее в окно браузера. Странная вещь, иногда она отлично работает, а иногда возвращается нулевая ширина.

играть на скрипке

document.body.addEventListener('drop', function ( e ) 
{
e.stopPropagation();
e.preventDefault();

file = e.dataTransfer.files[0];

reader.readAsDataURL( file );
reader.onloadend = function()
{
var source = this.result;
var currentImg = new Image();
currentImg.src = source;

var someDiv = document.createElement("div");
someDiv.innerHTML = '<li>'+currentImg.width+'</li>';

document.getElementById("logs").appendChild(someDiv);
}
});

спросил(а) 2021-01-28T00:44:20+03:00 3 месяца, 1 неделя назад
1
Решение
62

Это происходит потому, что вы, вероятно, получите ширину перед загрузкой изображения. Поместите код таким образом, и вы будете работать правильно.

...
var currentImg = new Image();
currentImg.onload = function() {
var someDiv = document.createElement("div");
someDiv.innerHTML = '<li>'+currentImg.width+'</li>';
document.getElementById("logs").appendChild(someDiv);
}
currentImg.src = source;
...

поставьте нагрузку перед настройкой sorce, потому что onload - это функция обратного вызова.

ответил(а) 2021-01-28T00:44:20+03:00 3 месяца, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема