|
|
Модератор форума: JonMagon |
Сообщество uCoz Вебмастеру JavaScript, Flash и прочие технологии Умная подгрузка новых сообщений форума |
Умная подгрузка новых сообщений форума |
Основная задача данного скрипта, это подгрузка новых сообщений в теме, в которой в данный момент находится пользователь.
Какие мозги прикручены: 1) На какой бы странице темы вы не находились — скрипт всегда будет проверять именно последнюю страницу 2) Скрипт понимает, когда сообщение оставляете именно вы 3) Даже если один пользователь оставил два разных сообщения или отредактировал старое — скрипт это поймёт и уведомит вас 4) Даже если два разных пользователя напишут два одинаковых сообщения — скрипт и это поймёт 5) Если новое сообщение оставлено на новой странице, даже в этом случае скрипт подгрузит именно сообщение с новой страницы и запомнит, что это уже новая страница 6) После подгрузки новых сообщений скрипт сам прокрутит страницу до самого низа 7) Скрипт использует минимум гет запросов — 1 при заходе на страницу и 1 каждые 25 секунд для проверки всех параметров. Третий гет запрос выполняется очень редко, в случаях, если новое сообщение оставлено на новой странице Установка: В Общем виде страниц форума после $BODY$: loader выглядет так: также Вы можете составить себе свой тут Код <img src="http://proaqua31.ru/images/ajax-loader.gif" id="apoL" style="position:fixed;z-index:100;top:50%;margin-top:-10px;left:50%;margin-left:-80px;opacity:0;" /> <?if($PAGE_ID$='threadpage')?> <script> var apo1 = window.location.href; var apos = $('.numPages:first').text(); var apos0 = apos.length; var apo2 = apo1.length; var apo3 = apo1.substr(0, apo2-apos0); var apous; // Глобальная переменная пользователя, последнего оставившего сообщение var apotxt; // Глобальная переменная текста последнего сообщения $.get(apo3+apos, function(apo0) { apous = $('.postUser:last', apo0).text(); apotxt = $('.posttdMessage:last', apo0).text(); };); setInterval(function() { $.get(apo3+apos, function(apo) { var aposwitch = $('.switchDigit:last', apo).attr('href'); var apous2 = $('.postUser:last', apo).text(); var apotxt2 = $('.posttdMessage:last', apo).text(); if(apous2!='$USERNAME$' && apotxt!=apotxt2 || apous2!='$USERNAME$' && apous!=apous2) { $('#apoL').stop().fadeTo(500, 1); $('.gTable').stop().fadeTo(500, 0.3); apous=$('.postUser:last', apo).text(); apotxt=$('.posttdMessage:last', apo).text(); apos = $('.numPages:first', apo).text(); if(apos!=$('.numPages:first', apo).text()) { $('.gTable').load(aposwitch+' .gTable', function() { $('#apoL').stop().fadeTo(500, 0); $('.gTable').stop().fadeTo(500, 1); $('body').animate({scrollTop: 15000}, 500); _uWnd.alert('Подгружено со страницы '+$('.numPages:first', apo).text()+' от <b>'+apous2+'</b>', '', {w:200, h:60};); };); } else { $('.gTable:first').html($('.gTable:first', apo)); setTimeout(function() { $('#apoL').stop().fadeTo(500, 0); $('.gTable').stop().fadeTo(500, 1); $('body').animate({scrollTop: 15000}, 500); }, 1000); _uWnd.alert('Подгружено со страницы '+apos+' от <b>'+apous2+'</b>', '', {w:200, h:60};); }; }; };); }, 25000); </script> <?endif?> Также можно данный скрипт закачать в файловый менеджер и установить по месту, как: Код <?if($PAGE_ID$='threadpage')?> <script type="text/javascript"src="путь к вашему файлу - js"></script><?endif?> Прикрепления:
7509054.gif
(3.1 Kb)
Сообщение отредактировал rem-31 - Вторник, 04 Фев 2014, 17:53:17
|
|
| |||
| |||