InfiniteScroll不适用于弹出窗口

时间:2013-10-31 10:34:47

标签: jquery ajax infinite-scroll

我的页面上有链接,显示带有此html的全屏弹出窗口:

<div class="movie-popup-container">
     <div class="popup">
          <-- content of popup --!>
     </div>
</div>

我的infinitescroll(Paul Irish之后的那个)如下:

$('#activity').infinitescroll({
    behavior: 'local',
    binder: $('.movie-popup-container'),
    bufferPx: 100,
    loading: {
        finishedMsg: "This is the end!",
        img: "/images/loading2.gif?ver=1",
        msgText: "Loading ...",
        speed: "slow",
        selector: "#movie-activity-container #loading-status"
    },
    debug: true,
    navSelector: navSelectorNew,
    // selector for the paged navigation (it will be hidden)
    nextSelector: nextSelectorNew,
    // selector for the NEXT link (to page 2)
    itemSelector: ".movie-activity-feed"
    // selector for all items you'll retrieve
});

我已将插件配置为仅适用于弹出滚动而非窗口滚动。它只适用于某些弹出窗口,但不适用于其他弹出窗口,并且没有模式。它适用于之前不起作用的相同弹出窗口,反之亦然。 Contentwise所有弹出窗口都具有相同的数据。调试日志如下:

//1st popup

XHR finished loading: "http://example.com/GetMain.jsp?productId=6219a937-6d9c-4d42-81b6-85380c306732". jquery.min.js:2
XHR finished loading: "http://example.com/GetXYZ.jsp?cache=0&type=all&productId=6219a937-6d9c-4d42-81b6-85380c306732&page=2". jquery.min.js:2
["determinePath", Array[2]]
 plugins.js:51
["Binding", "bind"] plugins.js:51
["math:", 2813, 2728] plugins.js:51
["heading into ajax", "/GetXYZ.jsp?cache=1&type=all&productId=6219a937-6d9c-4d42-81b6-85380c306732&page=2"] plugins.js:51
Using HTML via .load() method plugins.js:51
XHR finished loading: "http://example.com/GetXYZ.jsp?cache=1&type=all&productId=6219a937-6d9c-4d42-81b6-85380c306732&page=2". jquery.min.js:2
["contentSelector", div#movie-activity]
 plugins.js:51
["math:", 2613, 2728] plugins.js:51
["heading into ajax", "/GetXYZ.jsp?cache=1&type=all&productId=6219a937-6d9c-4d42-81b6-85380c306732&page=3"] plugins.js:51
Using HTML via .load() method plugins.js:51
XHR finished loading: "http://example.com/GetXYZ.jsp?cache=1&type=all&productId=6219a937-6d9c-4d42-81b6-85380c306732&page=3". jquery.min.js:2
["contentSelector", div#movie-activity]
 plugins.js:51
["math:", 1973, 2728] plugins.js:51
["heading into ajax", "/GetXYZ.jsp?cache=1&type=all&productId=6219a937-6d9c-4d42-81b6-85380c306732&page=4"] plugins.js:51
Using HTML via .load() method plugins.js:51
XHR finished loading: "http://example.com/GetXYZ.jsp?cache=1&type=all&productId=6219a937-6d9c-4d42-81b6-85380c306732&page=4". jquery.min.js:2
["contentSelector", div#movie-activity]
 plugins.js:51
["math:", 1173, 2728] plugins.js:51
["heading into ajax", "/GetXYZ.jsp?cache=1&type=all&productId=6219a937-6d9c-4d42-81b6-85380c306732&page=5"] plugins.js:51
Using HTML via .load() method plugins.js:51
XHR finished loading: "http://example.com/GetXYZ.jsp?cache=1&type=all&productId=6219a937-6d9c-4d42-81b6-85380c306732&page=5". jquery.min.js:2
["Error", "end"] plugins.js:51
["Binding", "unbind"] plugins.js:51
//1st popup closed with successful scrolling

//2nd popup 
XHR finished loading: "http://example.com/GetMain.jsp?productId=6219a937-6d9c-4d42-81b6-85380c306732". jquery.min.js:2
XHR finished loading: "http://example.com/GetXYZ.jsp?cache=0&type=all&productId=6219a937-6d9c-4d42-81b6-85380c306732&page=2". jquery.min.js:2
["determinePath", Array[2]]
 plugins.js:51
["Binding", "bind"] plugins.js:51
["math:", 3113, 2728] plugins.js:51
["math:", 2813, 2728] plugins.js:51
["heading into ajax", "/GetXYZ.jsp?cache=1&type=all&productId=6219a937-6d9c-4d42-81b6-85380c306732&page=2"] plugins.js:51
Using HTML via .load() method plugins.js:51
XHR finished loading: "http://example.com/GetXYZ.jsp?cache=1&type=all&productId=6219a937-6d9c-4d42-81b6-85380c306732&page=2". jquery.min.js:2
["contentSelector", div#movie-activity]
 plugins.js:51
["math:", 1984, 2728] plugins.js:51
["heading into ajax", "/GetXYZ.jsp?cache=1&type=all&productId=6219a937-6d9c-4d42-81b6-85380c306732&page=3"] plugins.js:51
Using HTML via .load() method plugins.js:51
XHR finished loading: "http://example.com/GetXYZ.jsp?cache=1&type=all&productId=6219a937-6d9c-4d42-81b6-85380c306732&page=3". jquery.min.js:2
["contentSelector", div#movie-activity]
 plugins.js:51
//2nd popup closed with successful scrolling

//3rd popup
XHR finished loading: "http://example.com/GetMain.jsp?productId=cf352423-0b05-4fa2-9ca8-323842bc96c2". jquery.min.js:2
XHR finished loading: "http://example.com/GetXYZ.jsp?cache=0&type=all&productId=cf352423-0b05-4fa2-9ca8-323842bc96c2&page=2". jquery.min.js:2
["determinePath", Array[2]]
 plugins.js:51
["Binding", "bind"] plugins.js:51
["math:", 3113, 2308] plugins.js:51
["math:", 2913, 2308] plugins.js:51
["math:", 2613, 2308] plugins.js:51
["math:", 2464, 2308]
//3rd popup scrolling failed despite going till bottom. 

对于上面日志中的第3个弹出窗口,我滚动到底部,它只是在调试中显示数学行。 另外,你能告诉我[“math:”,3113,2308]代表什么行?

2 个答案:

答案 0 :(得分:1)

由于您没有提供可以测试的示例,我将在几个假设下回答这个问题:

  1. 您正在为弹出窗口使用插件或自编脚本
  2. 弹出脚本必须初始化一次,以便链接在点击事件中打开弹出窗口
  3. 如果我的假设是正确的,那么问题是由于弹出窗口的初始化。 一旦infinitescroll脚本运行,您应该再次运行脚本。您可以在回调中执行此操作。

    $(elem).infinitescroll(options,[callback for reinitalization of popups]);
    

答案 1 :(得分:-1)

数学表示:

this._debug('math:', pixelsFromWindowBottomToBottom, opts.pixelsFromNavToBottom);

// if distance remaining in the scroll (including buffer) is less than the orignal nav to bottom....
return (pixelsFromWindowBottomToBottom - opts.bufferPx < opts.pixelsFromNavToBottom);

请参阅https://github.com/paulirish/infinite-scroll/blob/master/jquery.infinitescroll.js

2464-40&lt; 2308 =假

应该调用this.retrieve()

//我看到你将bufferPx设置为100,仍然应该解析为false

2464-100&lt; 2308 =假

必须进一步研究......