我这样实现了无限滚动:
new_page_value = 1;
$(window).scroll(function() {
if($(window).scrollTop() >= $(document).height() - $(window).height() - 200) {
new_page_value = parseInt(new_page_value) + 1;
get_page(new_page_value);
}
});
当用户接近页面底部(剩余200像素)时,将调用函数get_page()
。该函数包含一个ajax调用,获取新页面的所有内容,并将其追加到文档的<body>
中。现在我意识到,如果我的网站变得很大,而不是有10个小页面,而是有数十亿个巨大页面,那么如果用户坚持无限滚动很长时间,他们的浏览器可能会崩溃。
这是否是解决此问题的可能解决方案:
我将继续将新页面附加到文档的
<body>
中,直到第10页之后,我将完全替换<body>
内容,而不是追加。因此使用html()
而不是append()
。我不知道这是否真的可以防止崩溃。
.html()
会清除通过ajax引入的先前HTML的"内存"吗?
html()
会表现出这种行为,因为在将节点从DOM中移除之前未能删除事件处理程序会导致内存泄漏。如果要绕过此问题,请跟踪自己的事件处理程序并在触摸innerHTML
之前清除它们。 - eyelidlessness