Событие прокрутки внутри приложений Facebook Canvas

Я хочу использовать технику LazyLoad для изображений и бесконечную прокрутку для загрузки нового контента на мою страницу. Обе эти вещи используют функцию $ (window) .scrollTop () , которая внутри приложения Facebook Canvas не работает. Я знаю, что могу использовать FB.Canvas.getPageInfo () , чтобы получить текущее значение scrollTop, однако у меня возникают некоторые проблемы с производительностью, мой код выглядит следующим образом:

var oldScroll = 0;       // current scroll 
var newScroll = null;    // new scroll (fetched from FB.Canvas)

// Override the normal function to work within fb
// !!This seems to kill the browser
$.fn.scrollTop = function() {
    return FB.Canvas.getPageInfo().scrollTop;  
};

// poll to check for any changes in scroll
setInterval(function() {
    newScroll = FB.Canvas.getPageInfo().scrollTop; 

    if(oldScroll != newScroll) {     // have we scrolled at all?
        oldScroll = newScroll;
        $(window).trigger($.Event('scroll'));   // fire a scroll event to keep the rest of the application that is listening
    }
}, 1000);

Кажется, все в порядке, если Я не отменяю функцию scrollTop, но как только я это сделаю, мой браузер скоро выйдет из строя.

Я ошибаюсь? Кто-то уже создал способ сделать это внутри холста FB? Ваше здоровье.

5
задан nav 18 December 2011 в 12:44
поделиться