создание ссылок и загрузка холста Работа с изображениями ТОЛЬКО ОДИН РАЗ в Chrome - PullRequest
0 голосов
/ 28 марта 2019

Я создал инструмент javascript, который считывает фотографию из поля ввода, изменяет ее, изменяет размер и отображает на странице в теге. Затем я создаю ссылку и запускаю загрузку автоматически.
Все отлично работает с Firefox, Opera, Safari, но работает ОДИН РАЗ в Chrome! (не работает все в IE, но это не проблема для меня. Есть идеи?

https://jsfiddle.net/tuttoeniente/efod3avh/1/

EDIT:
ТОЛЬКО ОДИН РАЗ , я имею ввиду после открытия браузера. Если я закрою браузер, открою его снова, кеш будет работать. Все работает нормально, второй раз фото генерируется правильно, но оно не загружается автоматически.

function downloadCanvas() {
    if (datoImg !== undefined) {
        if (!isChrome && !isIE) {
            //funziona per firefox, safari ed opera
            var link = document.createElement("a");
            document.body.appendChild(link);
            link.href = datoImg;
            link.download = getNomeFoto();
            link.dispatchEvent(new MouseEvent('click', {bubbles: true, cancelable: true, view: window}));
            document.body.removeChild(link);
        } else{
            //converte in blob, altrimenti chrome non codificava bene
            dataURIToBlob(datoImg, callback);
        }
    } else {
        alert("Niente da scaricare");
    }
}


function dataURIToBlob(dataURI, callback) {
    var binStr = atob(dataURI.split(',')[1]),
            len = binStr.length,
            arr = new Uint8Array(len);
    for (var i = 0; i < len; i++) {
        arr[i] = binStr.charCodeAt(i);
    }
    callback(new Blob([arr]));
}

//funzione utilizzata per chrome che genera link
var callback = function (blob) {
    var a = document.createElement('a');
    a.download = getNomeFoto();
    a.innerHTML = 'download';
    a.href = URL.createObjectURL(blob);
    a.dispatchEvent(new MouseEvent('click', {bubbles: true, cancelable: true, view: window}));
};
...