Следующий код используется для установки атрибутов img, а затем что-то делать при загрузке img.
Это прекрасно работает в Chrome и FireFox, однако строка let img..etc никогда не срабатывает в Safari.,Почему это?
$("<img/>").attr("src", "data:image/*; base64," + base64).on("load", (e) => {
let img = e.currentTarget;
context.scale(width / img.width, height / img.height);
context.drawImage(img, 0, 0);
deferred.resolve($("<img/>").attr("src", canvas.toDataURL()));
});
Я пробовал использовать техническую предварительную версию сафари, но безрезультатно.Это происходит на Mac и iPhone.
Редактировать:
Согласно Обработка событий загрузки изображений между браузерами
Я пытался, но безрезультатно:
var image = $('<img/>');
image.on('load', e => {
let img = e.currentTarget;
context.scale(width / img.width, height / img.height);
context.drawImage(img, 0, 0);
deferred.resolve($('<img/>').attr('src', canvas.toDataURL()));
});
image.attr('src', 'data:image/*; base64,' + base64);
Я также пробовал с простым JavaScript
var image = $('<img/>');
image.onload = function(e) {
let img = e.currentTarget;
context.scale(width / img.width, height / img.height);
context.drawImage(img, 0, 0);
deferred.resolve($('<img/>').attr('src', canvas.toDataURL()));
};
image.src = "data:image/*; base64," + base64;