javascript – 处理图像对象

前端之家收集整理的这篇文章主要介绍了javascript – 处理图像对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
javascript中创建新的 Image元素时,Google Chrome的内存工具(开发人员工具> Timeline> Memory)自然会将其视为新的DOM元素.

就我而言,我最终得到了1500个DOM元素,我希望摆脱它们.我已经尝试保存数组中的所有对象,并在我准备好创建所有对象时在循环中删除所有对象,从而导致以下错误

未捕获的TypeError:无法调用null的方法’removeChild’

这表明Image对象没有出现在实际的DOM中.

var images = [];
var i,image;

for( i = 0; i < urls.length; i++ ) {
    image = new Image();
    image.src = urls[i];
}

// other stuff happens

for( i = 0; i < images.length; i++ ) {
    // apparently this doesn't work because I'm not adding the image to my DOM
    // images[i].parentNode.removeChild( images[i] );

    // delete images
}

有没有办法删除/删除/取消设置/处置Image对象?

解决方法

设置images = null将删除代码中对象的引用.但是,要实现其加载事件,Chrome必须拥有自己的对象内部引用.

也就是说,您可以使用以下代码

for( i = 0; i < urls.length; i++ ) { 
    image = new Image(); 
    image.src = urls[i]; 
    image.onload = function(){alert('Test');};
    image = null;
}

这样,即使您没有对这些对象的引用,您仍会获得大量“测试”警报.

因此,我猜测它是Chrome中的一个错误,而不是代码中的错误.

更新:通过Chromium源类型证明(我的意思是对该文件的第67-71行的评论,尤其是FIXME注释http://code.google.com/searchframe#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/bindings/v8/custom/V8HTMLImageElementConstructor.cpp):

06001

原文链接:https://www.f2er.com/js/159474.html

猜你在找的JavaScript相关文章