2010-06-20 108 views
7

jquery自動刷新使用了很多瀏覽器內存。有沒有辦法阻止這一點。我每3秒刷新一次2格,但是我將它移動了9秒和15秒,這對我的網站上的窗口保持打開狀態的時間越長,瀏覽器崩潰之前所需的內存越多,這一點就會有所幫助。jquery自動刷新div

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" ></script> 


<script> 
var auto_refresh = setInterval(
function() 
{ 
$('#details2').load('links2.php').fadeIn("slow"); 
}, 15000); // refresh every 10000 milliseconds</script> 
+0

你用什麼插件/代碼來做到這一點? – Matt 2010-06-20 18:22:45

+2

你可以發佈一些涉及的代碼嗎? – Pointy 2010-06-20 18:22:55

+0

<腳本類型= 「文本/ JavaScript的」 SRC = 「http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js」> 2010-06-20 18:25:52

回答

2

您可以嘗試跳過加載()並使用$ .ajax代替。我知道load();是一個Ajax請求,但我似乎記得它提取了整個腳本。嘗試請求腳本,執行數據庫計算並將數據作爲json返回。我假設你用數據庫請求中的數據發送完整的html。試試用json代替。

您將以對象形式獲取數據,例如這樣。

{"variable":"foo"} 

然後你可以用簡單的每條語句來獲取數據。

$.ajax({ 
    url: "links2.php", 
    type: "POST", 
    dataType: "json", 
    success: function(data){ 

     // data here is returned as objects since it's json 
     $.each(data, function(key, value) { 
      $("#details2").empty().append(value.variable); 
     }); 

    } 
}); 

我認爲這不應該泄漏你的記憶,並最終崩潰你的瀏覽器,即使你每隔一秒鐘調用它。試試看,讓我知道它是怎麼回事。

祝你好運!

+0

感謝斯特凡,這似乎很簡單,工作。 – 2010-07-23 03:43:16

0

嘗試將其更改爲這樣:

// ... 
$('#details2').empty().load('links2.php').fadeIn('slow'); 

它可能HALP明確地告訴jQuery來先清空容器,所以它可以釋放任何事件處理程序等。(雖然目前還不清楚,有將在那裏的任何處理...)

編輯 —其實沒關係;我檢查了jQuery源代碼,它看起來像撥打.html()(其中load()確實,我敢肯定)似乎總是首先調用empty()

+0

我會嘗試任何知道它可能工作的人。謝謝 – 2010-06-20 18:57:41

0

雖然答案已被批准,但我應該告訴你。我有同樣的問題。

我在jQuery文件的src中發現了問題。我使用JQuery網站網址作爲我的來源,並且它將我的計算機使用率提高到了99%。但後來我下載了整個JQuery腳本並將其保存在我的網站目錄中,我在源代碼中使用它,然後在計算機使用情況或內存方面沒有任何問題。試試吧..