【问题标题】:Javascript - really remove imageJavascript - 真正删除图像
【发布时间】:2014-04-24 12:48:19
【问题描述】:

一个有图片的页面。

Javascript 代码会定期从服务器加载新的图像内容作为数据:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAADwCAYAAAB....嗯,你明白,它是 base64 编码的图像。

Javascript 代码将图像 src 更改为新的,但看起来旧数据没有被删除。

如果我让页面运行一段时间,它会吃掉所有的内存。

有什么方法可以完全删除以前的图像吗?

【问题讨论】:

  • 事实是我通过同样的情况。所以我决定在 iframe 中加载图像:/

标签: javascript image base64


【解决方案1】:

我有一个建议。请测试一下,看看它是否适合您。

  1. 从 base64 字符串创建 blob。读: Creating a Blob from a base64 string in JavaScript

  2. var url = URL.createObjectURL(blob)。并将 url 设置为 src 图片

  3. 完成后,尝试 URL.revokeObjectURL(url)

【讨论】:

  • 谢谢,这有帮助。 @Misters,检查一下
【解决方案2】:

如果我理解正确,您将图像下载为 base64 编码字符串,然后将该字符串传递到 img src?如果是这种情况,听起来您的字符串的范围不会以某种方式到期。为了确保删除像字符串这样的原始对象,您必须通过对象的代理保留对字符串的引用。如下所示。

// Somewhere in a persistent scope like global
image_reference = {};

// In your ajax callback
if(image_reference.data != null) {
delete image_reference.data;
}
image_reference['data'] = response.data;
// Put image_reference.data into your img element

【讨论】:

    猜你喜欢
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 2012-11-14
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多