JavaScript URL.revokeObjectURL() — звільнити пам'ять від тимчасової адреси


Статичний метод URL.revokeObjectURL() звільняє пам'ять, зайняту адресою з createObjectURL().

автор: NagarD

Загальний опис

Браузер не може здогадатись, коли адреса стала непотрібною, — тож тримає файл у пам'яті, доки ти не скажеш прямо.

Але є тонкість із моментом виклику. Відкликати адресу одразу після присвоєння в src — надто рано: браузер ще не встиг завантажити зображення, і воно не покажеться. Правильно — в обробнику onload, коли картинка вже намальована.

Для завантаження файлу (<a download>) відкликати можна одразу після click() — браузер уже взяв дані.

автор: NagarD

Порада

Для зображень клич його в onload, для завантажень — одразу після click(). Занадто ранній виклик тихо ламає обидва сценарії.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
revokeObjectURL 8+ 4+ 6+ 15+ 12+ 10+
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
revokeObjectURL 4.4+ yes yes 6+

Приклади

+ запропонувати свій приклад у пісочниці

Правильний момент виклику — інакше нічого не покажеться.

HTML

<img id="preview" width="120" alt="Прев'ю">

JS

// Blob створюємо прямо тут — у житті це файл користувача
const svg = '<svg xmlns="http://www.w3.org/2000/svg" width="120" height="60"><rect width="120" height="60" fill="#0172ad"/></svg>';
const blob = new Blob([svg], { type: 'image/svg+xml' });

const img = document.getElementById('preview');
const url = URL.createObjectURL(blob);

img.src = url;

img.onload = () => {
    // звільняємо ЛИШЕ після завантаження
    URL.revokeObjectURL(url);
    console.log('Показано і звільнено');
};

// зарано звільниш — картинка може не встигнути показатись
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід