Javascript JS JQuery window.scroll在Mozilla Firefox中触发多个请求
我通过以下方式在我的网页上实现了内容的延迟加载: 初始荷载: func1:通过ajax调用获取10个品牌的信息(同时返回预期的总数据)。 func2:通过ajax获取上述功能中接收到的10个品牌的产品信息Javascript JS JQuery window.scroll在Mozilla Firefox中触发多个请求,javascript,jquery,ajax,Javascript,Jquery,Ajax,我通过以下方式在我的网页上实现了内容的延迟加载: 初始荷载: func1:通过ajax调用获取10个品牌的信息(同时返回预期的总数据)。 func2:通过ajax获取上述功能中接收到的10个品牌的产品信息 if ($(window).scrollTop() >= ($(document).height() - $(window).height())*0.7){ if(totaldatarecvd < totalExpectedData){ func1:
if ($(window).scrollTop() >= ($(document).height() - $(window).height())*0.7){
if(totaldatarecvd < totalExpectedData){
func1: Get information for next 10 brands via ajax call.
func2: Get products information of the 10 brands recieved in above function via ajax.
}
}
if($(窗口).scrollTop()>=($(文档).height()-$(窗口).height())*0.7){
if(totaldatarecvd
问题:在Google chrome上,它可以正常工作,而在Mozilla Firefox上,当用户滚动屏幕70%时,会发出多个ajax请求,因此呈现的数据顺序会中断。
预期:当70%的屏幕滚动时,发出一个ajax请求以获取下10个数据。在进一步的滚动中,获取接下来的10个品牌,以此类推
请建议如何通过一次一个请求来实现延迟加载。我相信您正在经历这种行为,因为当您使用鼠标滚轮滚动页面时,您实际所做的是一次滚动页面X像素(例如,使用一个滚轮“滚动”20像素)。但是,每次向下滚动页面1个像素时,都会触发滚动事件。因此,理论上,每个滚轮“滚动”都应执行分配给滚动事件的任何功能20次 解决方案:添加一个(全局)变量,该变量将控制是否已达到所需的滚动位置(从而启动数据加载),并使用该变量防止多个数据加载请求。变量最初应设置为
false
,达到所需的滚动位置后,设置为true
,并启动数据加载
数据加载完成后,不要忘记将其设置为false
,否则它只会在第一次工作
dataLoading = false;
if ($(window).scrollTop() >= ($(document).height() - $(window).height())*0.7 && !dataLoading){
dataLoading = true;
if(totaldatarecvd < totalExpectedData){
func1: Get information for next 10 brands via ajax call.
func2: Get products information of the 10 brands recieved in above function via ajax.
}
}
dataload=false;
如果($(窗口).scrollTop()>=($(文档).height()-$(窗口).height())*0.7&&!数据加载){
数据加载=真;
if(totaldatarecvd