Я работал над небольшим экспериментом, где, когда вы прокручиваете, на страницу загружаются новые записи.Проигрыватель прокрутки jQuery один за другим, действующий в WebKit
You can see a practical example here.
Теперь, если вы посмотрите на этот Firefox, все работает так, как должно. По мере того, как вы прокручиваете нижнюю часть страницы, начинайте загрузку, но только один за другим. Просмотрите его в WebKit, и вместо этого он начнет загружать все из них сразу и не останавливаться, пока не будет загружена всякая доступная запись.
Вот мой полный JavaScript, любезно JQuery:
$(document).ready(function(){
var loadedNum = 1;
var loadInterval = 10;
function loadMoreItems(){
for(i=loadedNum; i<loadedNum+loadInterval; i++){
$.get("ajax.html", function(data){
$("#loader").append($("li:nth-child("+loadedNum+")",data));
loadedNum++;
});
}
}
loadMoreItems();
$(this).scroll(function(){
var positionNum = $(this).scrollTop();
var heightNum = $("#container").height();
var topNum = $("#loader").position();
var windowNum = $(window).height();
var totalHeight = topNum.top+heightNum;
var totalScrolled = positionNum+windowNum;
if(totalHeight-totalScrolled<100){
$.get("ajax.html", function(data){
$("#loader").append($("li:nth-child("+loadedNum+")",data));
loadedNum++;
});
}
$("#position").css("top",totalScrolled-20);
$("#position").text("total left is "+(totalHeight-totalScrolled)+"px");
});
});
Кто-нибудь есть идеи, где я неправильно?
Safari - браузер WebKit. Двумя наиболее заметными браузерами WebKit являются Safari и Chrome, оба из которых, похоже, имеют одинаковую проблему. С Safari, если вы прокрутите до тех пор, пока не останется около 100 пикселей, он должен добавить только один. Однако по какой-то причине он имеет тенденцию добавлять несколько. Мне интересно, есть ли другой метод вместо проверки того, сколько осталось. – 2010-01-04 02:08:47