【问题标题】:slowness when using hashchange event使用 hashchange 事件时的缓慢
【发布时间】:2014-10-16 19:54:59
【问题描述】:

我有一个使用ajax进行分页的网站,页面系统根据hashchange事件工作,每当我想移动到另一个页面时,我都会调用一个将hash更改为页码的函数,当hash改变了hashchange 事件被触发并调用一个函数来获取页面数据。
但是,它工作得很好,除了一件事,如果我更改页面超过 3-4 次页面将不会响应并且会崩溃,我会检查谷歌浏览器的 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 paging hashchange


    【解决方案1】:

    您提供的代码没有显示它,但很可能发生的情况是在每个 xhr 之后您重新运行该绑定调用

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

    为避免这种情况,请确保

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

    只运行一次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-06
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多