Я хочу использовать технику 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? Ваше здоровье.