使用 hashchange 事件时速度缓慢

问题描述 投票:0回答:1

我有一个使用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>");
ajax pagination hashchange
1个回答
0
投票

您给出的代码没有显示它,但最有可能发生的是在每个 xhr 之后您重新运行该绑定调用

因此,您无意中双重、三重、四重绑定了事件 - 这正是网络日志所显示的:haschange 运行了 2,3,4,5 ... 次,直到浏览器崩溃。

为了避免这种情况,请确保

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

仅运行一次。

© www.soinside.com 2019 - 2024. All rights reserved.