Способ узнать, когда ObjectUrl был загружен (чтобы отозвать его...)

Я хотел бы удалить свои BLOB-объекты после их загрузки пользователем:

var url = window.URL.createObjectURL(myBlob);           
var a = document.createElement("a");
a.download = 'myFile' + fileExtension;
a.href = url;
a.click();//download launched

/** Here i want to revoke the ObjectURL and delete my Blob, but i dunno when? **/

Могу ли я сделать это без использования фиктивного таймера?

1 ответ

Решение

Чтобы просто отозвать URL-адрес при обращении к BLOB-объекту, используйте click обработчик события.

a.onclick = function () {
    window.URL.revokeObjectURL(url);
};

Чтобы проверить, что BLOB-объект действительно был загружен, вам необходимо загрузить его через XHR, где вы можете отслеживать ход его загрузки, используя progress а также load События. Насколько я знаю, вы не можете отслеживать ход загрузки в JavaScript для чего-то, инициированного вне XHR.

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest

Другие вопросы по тегам