Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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 使用raphael.js和hover进行内存泄漏_Javascript - Fatal编程技术网

Javascript 使用raphael.js和hover进行内存泄漏

Javascript 使用raphael.js和hover进行内存泄漏,javascript,Javascript,使用带有悬停属性的Raphael库饼图时发生严重内存泄漏。如果我删除包含hover属性的代码,它会工作得很好,当我将它添加回内存时,内存占用会稳步增长,而将鼠标悬停在piechart上会增加内存占用,甚至更大。与大多数其他示例不同,我使用window.setInterval不断更新页面(如果这有帮助的话)。 我不知道如何纠正这个问题并寻求帮助 下面是我正在做的基本工作…使用Raphael网站上的动态pieChart,并添加一个间隔计时器。然而,我不知道如何在没有内存问题的情况下利用悬停效果??:

使用带有悬停属性的Raphael库饼图时发生严重内存泄漏。如果我删除包含hover属性的代码,它会工作得很好,当我将它添加回内存时,内存占用会稳步增长,而将鼠标悬停在piechart上会增加内存占用,甚至更大。与大多数其他示例不同,我使用window.setInterval不断更新页面(如果这有帮助的话)。 我不知道如何纠正这个问题并寻求帮助

下面是我正在做的基本工作…使用Raphael网站上的动态pieChart,并添加一个间隔计时器。然而,我不知道如何在没有内存问题的情况下利用悬停效果??:

 window.onload = setInterval(drawThePie, 10000);
function drawThePie() {
    var mainCont = parent.frames["main"].document;
    mainCont.getElementById("holder").innerHTML = "Getting data..";

    //..Setting values for pieChart and legend into arrays here

    //..Looping through color array and setting values for colorlist below

            var r = Raphael("holder");
    var aCircle = r.aCircle(85,85,78).attr({fill: "black"});

            pie = r.piechart(85,85,75,data, {"legend": legend, "legendpos": "east", colors: colorlist });
    if(dataNotZero > 0) { mainCont.getElementById("holder").innerHTML = "";}

            pie.hover(function () {
                this.sector.stop();
                this.sector.scale(1.1, 1.1, this.cx, this.cy);

                if (this.label) {
                    this.label[0].stop();
                    this.label[0].attr({ r: 7.5 });
                    this.label[1].attr({ "font-weight": 800 });
                }
            }, function () {
                this.sector.animate({ transform: 's1 1 ' + this.cx + ' ' + this.cy }, 500, "bounce");

                if (this.label) {
                    this.label[0].animate({ r: 5 }, 500, "bounce");
                    this.label[1].attr({ "font-weight": 400 });
                }
            });
        };

它无法看到您的所有代码。所以我只能猜测

也许这部分是工作

this.sector.scale  
这部分代码可能会得到一些值,这些值有一些DOM引用。当函数结束时,该值仍然没有释放DOM引用