Javascript能够从HTML页面卸载图像吗?
我想知道是否可以从HTML页面卸载图像,并使用一些Javascript指令释放其内存占用。假设屏幕上已显示图像。假设我需要卸载它以节省内存(原因与此无关)。我可以用Javascript来做吗Javascript能够从HTML页面卸载图像吗?,javascript,html,image,Javascript,Html,Image,我想知道是否可以从HTML页面卸载图像,并使用一些Javascript指令释放其内存占用。假设屏幕上已显示图像。假设我需要卸载它以节省内存(原因与此无关)。我可以用Javascript来做吗 $('#myDiv').remove(); 或 会将其从DOM中删除,但不会释放任何内存、带宽或http请求……因此从性能角度看,它不会产生太大的影响(不考虑渲染) 然而,我相信如果图像从DOM中删除,它使用的内存最终将由浏览器管理和删除(垃圾收集) 因此,简言之,不,我认为没有特定的方法将其从内存中删除
$('#myDiv').remove();
或
会将其从DOM中删除,但不会释放任何内存、带宽或http请求……因此从性能角度看,它不会产生太大的影响(不考虑渲染)
然而,我相信如果图像从DOM中删除,它使用的内存最终将由浏览器管理和删除(垃圾收集)
因此,简言之,不,我认为没有特定的方法将其从内存中删除,因为这是一个浏览器级别的问题。关于您的问题的评论是正确的,您可以将其从DOM中删除,但浏览器会在确定其良好且准备就绪时将其从内存中清除 要从DOM中清除它,可以执行以下操作:
var badImage = document.querySelector("img#idOfImage");
//or "img[href='nameofimagefile.jpeg']"
//whatever you need to do to get the right element
//then, remove it:
badImage.parentElement.removeChild(badImage);
在移除img元素之前,可以通过将src属性指定给1x1像素来释放img元素的内存
const imgElement = document.querySelector(selector);
imgElement.setAttribute('src', '/images/pixel.gif');
imgElement.parentElement.removeChild(imgElement);
您可以从DOM树中删除图像,但其从内存中的删除仅取决于您的浏览器。作为@duri的后续操作,浏览器将垃圾收集未使用的资产并最终释放内存,虽然从用户的角度来看,没有API来实现这种级别的控制,但您可能希望制作一个具有巨大图片的测试用例,并在删除它时观察浏览器内存消耗情况。让我知道浏览器的反应;)如果图像没有被删除,它的SRC属性变为空,那么它也会被垃圾收集吗?非常接近已经被接受的答案作为一个迟到的答案,考虑这是否有助于OP。我刚刚找到这个答案并认为它是有用的。接受的答案仅从DOM中删除
元素。Shogo的答案也是如此,但更重要的是,他试图通过定义一个新的图像源,将图像从浏览器内存中删除(如OP所要求的)。如果您只是从DOM中删除元素,它仍然存在于全局范围中,具有相同的源映像(因此浏览器可能会将其保留在内存中)-例如,使用document.body.appendChild(badImage)结束接受的答案
和图像将立即返回(在页面底部)。
const imgElement = document.querySelector(selector);
imgElement.setAttribute('src', '/images/pixel.gif');
imgElement.parentElement.removeChild(imgElement);