Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript能够从HTML页面卸载图像吗?_Javascript_Html_Image - Fatal编程技术网

Javascript能够从HTML页面卸载图像吗?

Javascript能够从HTML页面卸载图像吗?,javascript,html,image,Javascript,Html,Image,我想知道是否可以从HTML页面卸载图像,并使用一些Javascript指令释放其内存占用。假设屏幕上已显示图像。假设我需要卸载它以节省内存(原因与此无关)。我可以用Javascript来做吗 $('#myDiv').remove(); 或 会将其从DOM中删除,但不会释放任何内存、带宽或http请求……因此从性能角度看,它不会产生太大的影响(不考虑渲染) 然而,我相信如果图像从DOM中删除,它使用的内存最终将由浏览器管理和删除(垃圾收集) 因此,简言之,不,我认为没有特定的方法将其从内存中删除

我想知道是否可以从HTML页面卸载图像,并使用一些Javascript指令释放其内存占用。假设屏幕上已显示图像。假设我需要卸载它以节省内存(原因与此无关)。我可以用Javascript来做吗

$('#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);