0

好的,这是一个奇怪的错误,因为它是第一个没有任何完整重新加载的 ajax 页面我正在创建它是我以前从未遇到过的错误......甚至互联网也没有帮助我 - 因为它似乎没有是一个常见的问题。

让我们逐步解决问题:我有一个页面,其中 Ajax 请求由一个简化的函数触发,如下所示:

$("a[rel='tab']").live('click',function(e) {

pageurl = $(this).attr('href');
$.ajax({url:pageurl+'?rel=tab',success: function(data){
  $('#content').html(data);
}});
if(pageurl!=window.location){
  window.history.pushState({path:pageurl},'',pageurl);
}
e.preventDefault();
return false;
});

这是由 PHP 文件解析的,如果设置了属性,则不会加载设计,而只会加载文件本身 - 容易吗?

好的,现在问题本身 - 很明显页面随着时间的推移变得更慢,但我一开始并没有真正打扰,因为我认为这是设计 javascripts 中的一些错误 - 但事实并非如此。

所以我看了一下萤火虫,我所看到的解释了很多 -> 请求与每个新页面叠加!当然,这会导致过度杀伤......好吧,起初我认为它只是“setInterval”并且运行了一个解决方法,它在每次重新加载时重置它们。

但这并不是他们似乎也堆积在“脚本”中的唯一情况,因为我不认为这是一个简单的历史,因为重新加载的脚本不止一次出现!

右侧的任何提示都会非常有帮助,因为我几乎被困在这里!

4

1 回答 1

0

好的,因为看起来这个问题毕竟只是与 setInterval 有关 - 在尝试了一段时间后,我得出的结论是这是主要问题,它只是萤火虫本身的某种循环。

然而,也许有人陷入了同样的问题,所以解决方案几乎是这样的:你必须: 1. 创建一个数组来存储你的间隔 2. 以这种方式调用你的 setIntervals 3. 在每个“新窗口”上重置它们

var intervalArr = new Array();

function killIntervals(){
while(intervalArr.length > 0)
    clearInterval(intervalArr.pop());
};

这些是数组和函数

所以这些应该被添加到你的 AJAX 请求函数中:

killIntervals();
intervalArr.push(setInterval (yourintervalfunction, 5000));

我希望这对某人有用。

于 2012-06-27T10:54:37.630 回答