После долгих исследований я узнал, что binding
событие scroll
для $(window)
в состоянии live
не поддерживается. Это нормально, но у меня есть вопрос или два в отношении сценария, над которым я работаю.
У меня есть веб-сайт, использующий плагин jQuery History для HTML5 (http://tkyk.github.com/jquery-history-plugin/) для загрузки страниц для удобства пользователей, поскольку на моем сайте есть привязанный аудиоплеер.
На одной из моих страниц я создал бесконечный свиток для загрузки в Альбомы после прокрутки окна. Он работает нормально, если вы переходите на страницу напрямую, но если вы переходите туда по ссылке с поддержкой HTML5 (у меня есть несколько ссылок, специально предназначенных для реализации HTML5), она не работает.
Вот мой код бесконечной прокрутки:
jQuery(function() {
var getMoreMedias, loading, mediaType, nearBottomofPage, page, pendingCall, genreType, url, did_scroll;
page = 1;
loading = false;
// did_scroll = false
mediaType = $('.breadcrumbs strong').attr('rel');
genreType = $('.breadcrumbs strong').data('genre-id')
nearBottomofPage = function() {
return $(window).scrollTop() > $(document).height() - $(window).height() - $('#footer').height();
};
getMoreMedias = function(page, mediaType) {
opts = {
lines: 12, //The number of lines to draw
length: 7, //The length of each line
width: 3, //The line thickness
radius: 10, //The radius of the inner circle
color: '#000', // #rgb or #rrggbb
speed: 1, //Rounds per second
trail: 60, // Afterglow percentage
shadow: true //Whether to render a shadow
};
var spinner = new Spinner(opts).spin()
$('#loadingMore').append(spinner.el)
url = '/top_medias/'
url += mediaType
if(genreType)
url += '/' + genreType
url += '?page=' + page
$.ajax({
cache: false,
url: url,
type: 'get',
dataType: 'script',
success: function(data) {
$('#loadingMore').html('');
loading = false
},
error: function() {
$('#loadingMore').html('<p>No more results could be found</p>')
loading = false
}
});
};
$(window).scroll(function(){
did_scroll = true
})
setInterval(function(){
if(did_scroll) {
if (loading) return;
if (nearBottomofPage()) {
loading = true;
page++;
getMoreMedias(page, mediaType)
did_scroll = false
}
}
}, 250)
});
Есть ли способ взять то, что у меня есть выше, и заставить его работать, если к странице обращаются через Ajax (что в сущности делает плагин HTML5)?