【问题标题】:Clearing memory in browsers清除浏览器内存
【发布时间】:2011-12-15 05:55:10
【问题描述】:

我有一个图像旋转器,它为新幻灯片创建一个 div、隐藏当前幻灯片、显示新 div 并删除隐藏的 div。 所有这些都是用 jquery 完成的,我正在使用这段代码来删除我不再需要的幻灯片:

var last = $("#item_" + lastSlide + "_" + idSuffix);
last.empty();
last.remove();
last = null;

每张幻灯片后内存仍在增加。 关于如何有效清除内存的任何想法?

【问题讨论】:

标签: javascript jquery memory browser


【解决方案1】:

为不同的幻灯片使用不同的元素并不明智。您应该使用两个元素来制作渐变幻灯片。这是我前段时间写的一段代码:

el = function(q) {return document.getElementById(q)};

var slides=["logo.jpg","avond.jpg","bar.jpg","buitencloseup.jpg","servet.jpg","spelcomputers.jpg","tafelaanbar.jpg","tafelsbuiten.jpg"],
Math.floor(Math.random()*slides.length),
highimg=el("highimg"),
lowimg=el("lowimg"),
fade,
changeslide=function() {
    lowimg.style.backgroundImage=highimg.style.backgroundImage
    highimg.style.backgroundImage="url(img/slideshow/"+(slides[++_src]||slides[_src=0])+")"
    var time=highimg.style.opacity=0;
    highimg.style.filter="alpha(opacity=0)"

    if (fade)
    clearInterval(fade)

    fade=setInterval(function(){
        if(highimg.style.opacity<1)
        highimg.style.filter="alpha(opacity="+(highimg.style.opacity=time+=1/40)*100+")"
        else
        {
            highimg.style.filter="alpha(opacity=100)";
            highimg.style.opacity=1
            clearInterval(fade);
        }
    },25)
}
interval=setInterval(changeslide,10000)
highimg.onclick = changeslide
changeslide()

【讨论】:

  • 我知道你写这篇文章花了一些时间,但是很混乱,请添加更多的 cmets 以使其更易于理解
  • 我不只是改变图像。我也在显示html内容。所以我认为这没有帮助,因为这两个容器将填充必须删除的 html 内容。
  • 每张幻灯片都具有相同的结构吗?例如:标题、副标题、信息、图像。然后,您可以重用具有不同文本和属性的每个元素。
【解决方案2】:

我想出的最佳解决方案是在删除元素之前清除 html 内容。

例如:

myDiv.html("");
myDiv.remove();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多