Добрый день. Имеется два кода:
Первый (исходник):
И второй (рабочий на DLE):
Так вот, как вы поняли, 2 код работает на DLE, первый нет. Нужно адаптировать первый код, по мотивам второго. Либо же сделать по-другому: первый раз нужно нажимать на "загрузить ещё", а все последующие должны загружать новости автоматически (собственно это и есть описание первого кода). Сам попробовал.. не получается. Кто может справиться?..
Первый (исходник):
Код |
---|
<div class='infinite-scroll-button'> <a href="#" onclick="EnableInfiniteScroll(); return false;"></a> </div> </div> <script> //<![CDATA[ $(function(){ var wnd = $(window), doc = $(document), ftr = $('#footer') var left_column = $('#left-column'), middle_column = $('#middle-column'), right_column = $('#aside') function showPosts(posts){ left_column .append(posts[0]) .append(posts[1]) .append(posts[2]) middle_column .append(posts[3]) .append(posts[4]) .append(posts[5]) right_column .append(posts[6]) .append(posts[7]) .append(posts[8]) } window.EnableInfiniteScroll = function(){ // Скрыть кнопку активации и начать моргать кошкой $('.infinite-scroll-button').hide() Fotki.blink_kitty() var page = 0, ajaxed = false function BottomPos(el){ return el.offset().top + el.height() } function AjaxIt(){ var window_bottom_position = wnd.scrollTop() + wnd.height() var start_scroll_at = 1e100, start_scroll_off = 150 start_scroll_at = Math.min(start_scroll_at, BottomPos(left_column)) start_scroll_at = Math.min(start_scroll_at, BottomPos(middle_column)) start_scroll_at = Math.min(start_scroll_at, BottomPos(right_column)) if (window_bottom_position >= start_scroll_at - start_scroll_off && !ajaxed){ ajaxed = true $.ajax({ url: '/', data: { format: 'js', page: ++page, count: 9, offset: 56 }, success: function(data){ Analytic.page_view("/") // счетчик главной страницы ajaxed = false showPosts(data) }, error: function(xhr, msg, err){ ajaxed = false console.log('Error while loading page ' + page + ' via ajax!') console.log(xhr) console.log(msg) console.log(err) }, dataType: 'json' }) } } wnd.scroll(AjaxIt) AjaxIt() } }) //]]> </script> |
И второй (рабочий на DLE):
Код |
---|
<script language="javascript" type="text/javascript"> var navAjaxUrlIE = /*@cc_on!@*/false; var lastExtNewsUrl = ""; var lastExtNewsPage = 0; var mainClassNewsNavigation = "bnnavi"; // navigation.tpl - название класса основного элемента function loadExtNews(){ $('.bnnavi').hide() if( lastExtNewsUrl ) { var url = lastExtNewsUrl.replace( "/page/" + lastExtNewsPage, "/page/" + ( lastExtNewsPage + 1 ) ) + ""; lastExtNewsPage++; } else { var url = location.href; url = url.replace( new RegExp( "#(.*)", "g" ), "" ) + ""; var RegExpC = new RegExp( "/page/([0-9]+)", "g" ); if( url.match( RegExpC ) ) { var page = url.match( /page\/[0-9]{1,50}/ ) + ""; page = parseInt( page.match( /[0-9]{1,50}/ ) ); var newPage = page + 1; url = url.replace( "/page/" + page, "/page/" + newPage ) + ""; lastExtNewsPage = newPage; } else { url = url + "page/2/"; lastExtNewsPage = 2; } } lastExtNewsUrl = url; $( "#dle-content ." + mainClassNewsNavigation + " a" ).html( "<span>Идёт загрузка...</span>" ); $.ajax({ url: url, data: "", success: function( data ){ //var parser = new DOMParser(); //var doc = parser.parseFromString( data, "text/html" ); //$( "#dle-content ." + mainClassNewsNavigation ).remove(); //$( "#dle-content" ).html( $( "#dle-content" ).html() + doc.getElementById( "dle-content" ).innerHTML ); var cont = $( data ).find( "#dle-content" ); $( "#dle-content ." + mainClassNewsNavigation ).remove(); $( "#dle-content" ).html( $( "#dle-content" ).html() + $( cont[0] ).html() ); $( "#dle-content ." + mainClassNewsNavigation ).html( "<a href=\"#\" onclick=\"loadExtNews(); return false;\" class=\"loadExtNews\"><span>Загрузить ещё</span></a>" ); if( !navAjaxUrlIE ) history.pushState( {}, "", lastExtNewsUrl ); }, error: function( xhr, ajaxOptions, thrownError ){ // Можно по номеру ошибки определять, но в любом случае ответ не тот, показывать нечего, страхуемся ))) $( "#dle-content ." + mainClassNewsNavigation ).html( "<a href=\"#\" onclick=\"return false;\" class=\"loadExtNews\"><span>Новостей больше нет</span></a>" ); }, dataType: "html", type: "POST" }); } $( document ).ready( function(){ $( "#dle-content ." + mainClassNewsNavigation ).html( "<a href=\"#\" onclick=\"loadExtNews(); return false;\" class=\"loadExtNews\"><span>Загрузить ещё</span></a>" ); } ); </script> |
Изменено:
LeWin - 2 Июля 2013 19:14