我有一个使用ajax进行分页的网站,页面系统根据hashchange事件工作,每当我想移动到另一个页面时,我调用一个函数将hash更改为页码,当hash更改时hashchange事件被触发并调用函数来获取页面数据。
然而,它工作得很好,除了一件事,如果我更改页面超过 3-4 次,页面将不会响应并且会崩溃,我检查 google chrome 中的 Inspect 元素中的网络水龙头,我看到的是当我更改page的ajax请求数量会增加一倍,传输的数据也会增加一倍,这会导致内存泄漏。
最终,我尝试在没有 hashchange 的情况下进行分页,看看问题是否会得到解决,它的效果非常好。
你能告诉我该怎么办吗?提前致谢
hashchange 事件
$(window).bind('hashchange', function () {
search(0);
});
更改哈希函数
function ChangeHash(p) {
window.location.hash = p;
}
翻页按钮
$('#Pages').append("<button type='button' class='btn btn-default"+active+"' Onclick=\"ChangeHash(" + a + ")\">" + a + "</button>");
您给出的代码没有显示它,但最有可能发生的是在每个 xhr 之后您重新运行该绑定调用。
因此,您无意中双重、三重、四重绑定了事件 - 这正是网络日志所显示的:haschange 运行了 2,3,4,5 ... 次,直到浏览器崩溃。
为了避免这种情况,请确保
$(window).bind('hashchange', function () {
search(0);
});
仅运行一次。