Загрузить содержимое при прокрутке страницы
в определенной директории имеем файлы:
index1.html index2.html index3.html index4.html ... Нижнее положение скролла отлавливаю так: window.onscroll = function () { var B = document.body, DE = document.documentElement, O = Math.min (B.clientHeight, DE.clientHeight); if (!O) O = B.clientHeight; var S = Math.max (B.scrollTop, DE.scrollTop), C = Math.max (B.scrollHeight, DE.scrollHeight); if (O + S == C) alert ('Работаем'); } Как при крайнем нижнем положении подгрузить index1.html далее index2.html и т.д В итоге, орудую таким кодом: <!doctype html> <html> <head> <script> window.onscroll = function () { var B = document.body, DE = document.documentElement, O = Math.min (B.clientHeight, DE.clientHeight); if (!O) O = B.clientHeight; var S = Math.max (B.scrollTop, DE.scrollTop), C = Math.max (B.scrollHeight, DE.scrollHeight); var element = document.querySelector('.contentBody'); var element2 = document.querySelector('.contentBody2'); if (O + S == C) element2.innerHTML = 'Добавили второй эллемент<br/><br/><br/><br/><br/><br/><br/><br/><br/>'; element.innerHTML = 'Добавили<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>'; } function createRequestObject() { try { return new XMLHttpRequest() } catch(e) { try { return new ActiveXObject('Msxml2.XMLHTTP') } catch(e) { try { return new ActiveXObject('Microsoft.XMLHTTP') } catch(e) { return null; } } } } </script> </head> <body style="height:650px;"> <br/><br/><br/><br/><br/><br/> <div class="contentBody"></div> <div class="contentBody2"></div> </body> <html> Как вместо element2.innerHTML = 'Добавили второй эллемент<br/><br/><br/><br/><br/><br/><br/><br/><br/>'; element.innerHTML = 'Добавили<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>'; Подгружать содержимое из index1.html и index2.html соответственно |
Цитата:
А подгружать просто: var request = new XMLHttpRequest(); request.open('GET', 'index1.html'); request.onreadystatechange = function() { if (request.readystate == 4) { if (request.status == 200) { element.innerHTML = request.responseText; } } }; request.send(null) Удобней обернуть все это в функцию, передавая аргументами url и callback-функцию |
Странно, если присутствует строка
request.open('index1.html'); то код не выполняется, пытался менять путь, ничего. |
Поправил код.
|
А как сделать что-бы он выполнялся поэтапно ?
т.е не все файлы подгружал при прокрутке вниз. Прокрутили вниз. *Загрузился первый файл Прокрутили вниз *Загрузился второй файл и т.д var request1 = new XMLHttpRequest(); request1.open('GET', 'page1.html'); var request2 = new XMLHttpRequest(); request2.open('GET', 'page2.html'); var request3 = new XMLHttpRequest(); request3.open('GET', 'page3.html'); var request4 = new XMLHttpRequest(); request4.open('GET', 'page4.html'); var request5 = new XMLHttpRequest(); request5.open('GET', 'page5.html'); request1.send(null) request2.send(null) request3.send(null) request4.send(null) request5.send(null) window.onscroll = function () { var B = document.body, DE = document.documentElement, O = Math.min (B.clientHeight, DE.clientHeight); if (!O) O = B.clientHeight; var S = Math.max (B.scrollTop, DE.scrollTop), C = Math.max (B.scrollHeight, DE.scrollHeight); var element1 = document.querySelector('.contentBody1'); var element2 = document.querySelector('.contentBody2'); var element3 = document.querySelector('.contentBody3'); var element4 = document.querySelector('.contentBody4'); var element5 = document.querySelector('.contentBody5'); if (O + S == C) element5.innerHTML = request5.responseText; element4.innerHTML = request4.responseText; element3.innerHTML = request3.responseText; element2.innerHTML = request2.responseText; element1.innerHTML = request1.responseText; } |
Или проще задать конкретную высоту ?
тогда как ? |
Разобрался
var request1 = new XMLHttpRequest(); request1.open('GET', 'page1.html'); var request2 = new XMLHttpRequest(); request2.open('GET', 'page2.html'); var request3 = new XMLHttpRequest(); request3.open('GET', 'page3.html'); var request4 = new XMLHttpRequest(); request4.open('GET', 'page4.html'); var request5 = new XMLHttpRequest(); request5.open('GET', 'page5.html'); request1.send(null) request2.send(null) request3.send(null) request4.send(null) request5.send(null) var html = document.documentElement; window.onscroll = function () { var B = document.body, DE = document.documentElement, O = Math.min (B.clientHeight, DE.clientHeight); if (!O) O = B.clientHeight; var S = Math.max (B.scrollTop, DE.scrollTop), C = Math.max (B.scrollHeight, DE.scrollHeight); var element1 = document.querySelector('.contentBody1'); var element2 = document.querySelector('.contentBody2'); var element3 = document.querySelector('.contentBody3'); var element4 = document.querySelector('.contentBody4'); var element5 = document.querySelector('.contentBody5'); if ($(this).scrollTop() >= 650) { element1.innerHTML = request1.responseText; } if ($(this).scrollTop() >= 2500) { element2.innerHTML = request2.responseText; } //element5.innerHTML = request5.responseText; //element4.innerHTML = request4.responseText; //element3.innerHTML = request3.responseText; //element2.innerHTML = request2.responseText; //element1.innerHTML = request1.responseText; } |
Хах. И в чем прикол аякс подгрузки и разбивки на файлы если грузится все и сразу?
|
over много фотографий, я не знал как сделать дргим способом, но грузятся они теперь не все разом, а по кускам
|
Не понятно как бороться с размером монитора... на больших мониторах значение не срабатывает, и приходится ставить меньше
|
dolte,
1 способ внизу страницы кнопа -- скролим страницу - кнопа видна грузим перед ней контент 2 способ внизу страницы кнопа -- скролим страницу - кнопа видна - жмём кнопу - грузим перед ней контент - грузить нечего - убираем кнопу |
Отошел от того к чему шел.
var request1 = new XMLHttpRequest();request1.open('GET', '/complete/moonbeam-suhov/page1.html'); var request2 = new XMLHttpRequest();request2.open('GET', '/complete/moonbeam-suhov/page2.html'); var request3 = new XMLHttpRequest();request3.open('GET', '/complete/moonbeam-suhov/page3.html'); var request4 = new XMLHttpRequest();request4.open('GET', '/complete/moonbeam-suhov/page4.html'); var request5 = new XMLHttpRequest();request5.open('GET', '/complete/moonbeam-suhov/page5.html'); request1.send(null) request2.send(null) request3.send(null) request4.send(null) request5.send(null) var html = document.documentElement; window.onscroll = function () {//Открыли var element1 = document.querySelector('.ms-showphoto1'); var element2 = document.querySelector('.ms-showphoto2'); var element3 = document.querySelector('.ms-showphoto3'); var element4 = document.querySelector('.ms-showphoto4'); var element5 = document.querySelector('.ms-showphoto5'); var clienth = html.clientHeight; //var clienthh = document.documentElement.scrollHeight; //alert(clienthh); //alert(clienth); //alert(document.documentElement.scrollTop); //alert(document.documentElement.scrollHeight); //alert("Размер вьюпорта: "+ html.clientWidth +"х"+ html.clientHeight); if (clienth <= 768 ) { if ($(this).scrollTop() >= clienth + 200 ){element1.innerHTML = request1.responseText;} if ($(this).scrollTop() >= clienth + 1200){element2.innerHTML = request2.responseText;} if ($(this).scrollTop() >= clienth + 2200){element3.innerHTML = request3.responseText;} if ($(this).scrollTop() >= clienth + 3200){element4.innerHTML = request4.responseText;} if ($(this).scrollTop() >= clienth + 4200){element5.innerHTML = request5.responseText;} }else{ if ($(this).scrollTop() >= clienth + 100 ){element1.innerHTML = request1.responseText;} if ($(this).scrollTop() >= clienth + 1200){element2.innerHTML = request2.responseText;} if ($(this).scrollTop() >= clienth + 2200){element3.innerHTML = request3.responseText;} if ($(this).scrollTop() >= clienth + 3200){element4.innerHTML = request4.responseText;} if ($(this).scrollTop() >= clienth + 4200){element5.innerHTML = request5.responseText;} } }//Закрыли вполне работает и на данном этапе устраивает |
Выбросил этот вриант.
Высчитываю положение скролла по другому. Остался вопрос как разделить загрузку, не всё разом, а поэтапно. Прокрутили, подгрузили 1 эллемент Прокрутили, подгрузили 2 эллемент. var thisPageNum = 1; var thisWork = 1; var thisPageNum2 = 2; var thisWork2 = 2; function getNextP1(){ if(thisWork == 1 && thisPageNum < 2){thisWork = 0; $("#upBlock").css('display','block'); $.get("get/get1.php?page="+thisPageNum, function(data){ $("#upBlock").css('display','none'); $("#LoadDiv").html($("#LoadDiv").html()+" "+data); thisPageNum = thisPageNum + 1; thisWork = 1; }); } } function getNextP2(){ if(thisWork2 == 2 && thisPageNum2 < 3){thisWork2 = 0; $("#upBlock").css('display','block'); $.get("get/get2.php?page="+thisPageNum2, function(data){ $("#upBlock").css('display','none'); $("#LoadDiv").html($("#LoadDiv").html()+" "+data); thisPageNum2 = thisPageNum2 + 1; thisWork2 = 2; }); } } $(document).ready(function(){ var scrH = $(window).height(); var scrHP = $("#container").height(); $(window).scroll(function(){ var scro = $(this).scrollTop(); var scrHP = $("#container").height(); var scrH2 = 0; scrH2 = scrH + scro; var leftH = scrHP - scrH2; if(leftH < 10){ getNextP1(); getNextP2(); } }); }); |
Часовой пояс GMT +3, время: 05:58. |