2014-10-16 87 views
0

我有一個網站,使用ajax進行分頁,頁面系統根據hashchange事件工作,每當我想移動到另一個頁面,我調用一個函數,將散列更改爲頁碼,當哈希值改變時,hashchange事件被觸發並調用一個函數來獲取頁面數據。
但是,除了一件事情,它可以很好地工作,如果我改變頁面超過3-4次,頁面將不會響應並且會崩潰,我在谷歌瀏覽器的檢查元素中檢查網絡點擊,以及我看到的是什麼時候我改變頁面ajax請求的數量將翻倍,傳輸的數據也會翻倍,這會導致內存泄漏。
最後,我試着做了沒有hashchange的分頁事情,看看問題是否會得到解決,它的工作方式就像魅力。
你可以請直到我做什麼?在此先感謝
使用hashchange事件時速度緩慢

hashchange事件

$(window).bind('hashchange', function() { 
search(0); 
}); 

changehash功能

function ChangeHash(p) { 
window.location.hash = p; 
} 

頁按鈕

$('#Pages').append("<button type='button' class='btn btn-default"+active+"' Onclick=\"ChangeHash(" + a + ")\">" + a + "</button>"); 

回答

0

你給不顯示它的代碼,但最可能發生的事情是每次xhr後,您正在重新運行綁定呼叫

因此,您是無意中的雙重,三重,四重綁定事件 - 這正是網絡日誌顯示的內容:haschange正在運行2,3,4,5 ...次,直到瀏覽器崩潰。

爲了避免這種情況,確保

$(window).bind('hashchange', function() { 
search(0); 
}); 

只運行一次。