0

OK、これは奇妙なエラーです。これは完全なリロードのない最初の 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 ファイルによって解析され、プロパティが設定されている場合、デザインは読み込まれず、代わりにファイル自体だけが読み込まれます。

OK、問題自体 - ページが時間とともに遅くなったのは明らかでしたが、JavaScript のデザインの間違いだと思ったので、最初はあまり気にしませんでしたが、そうではありませんでした。

だから私はfirebugを見て、私が見たことは多くのことを説明しました->リクエストは新しいページごとに積み重なります! もちろん、それはやり過ぎにつながります...まあ、最初は「setInterval」だけだと思っていたので、リロードごとにそれらをリセットする回避策を実行しました。

しかし、リロードされたスクリプトが複数回表示されるだけなので、それは単純な歴史ではないと思うので、「スクリプト」に積み重なっているように見えるのはそれだけではありません!

私はここでほとんど立ち往生しているので、右のヒントは本当に役に立ちます!

4

1 に答える 1

0

問題は結局setIntervalに関連しているように見えるので、OK-しばらく試してみたところ、これが主な問題であり、firebug自体のある種のループであるという結論に達しました。

ただし、誰かが同じ問題で立ち往生している可能性があるため、解決策はほぼ次のようになります。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 に答える