21:43 Суббота 2025
Статистика Форума
Последние обновленные темы Самые популярные темы Самые активные Новые участники
Время в профиле прош... (0)
КПК - персональная с... (0)
Вид цитаты и code st... (0)
СТАЛКЕРСКИЙ МИНИ-ПРО... (0)
БЛОК ИНТЕРЕСНЫХ ФАКТ... (0)
Гид по Народной Соля... (27)
Бар «От заката до ра... (18)
Гид по прохождению м... (16)
Азы модостроения (14)
Баги и ошибки на сай... (8)
XemorDio(died) (626)
Бармен (146)
ExGooD (48)
habib (37)
Rayviner (19)
maksimstebnovskij5 (02.03.2023)
slitkovets (30.10.2022)
ianoiano62 (29.01.2022)
Timkalv (20.09.2021)
Myloisonau (03.09.2021)

  • Страница 1 из 1
  • 1
Быстрая подгрузка постов на страницу без обновления
XemorDio(died)Дата: Суббота, 09.01.2016, 21:13 | Сообщение # 1
Генерал-лейтенант
Группа: Свобода
Сообщений: 626
Награды: 3
Репутация: 4
Статус:

Скрипт разработан по просьбе пользователя DarkPROF, добавления/изменения- QWERTY™(я)
Основной задачей скрипта была подгрузка новых сообщений в теме, в которой в данный момент находится пользователь

Я потратил чуть более трёх часов, чтобы довести код до совершенства, дабы он мог работать на любых форумах системы uCoz и в любых темах

Какие мозги прикручены:
1) На какой бы странице темы вы не находились - скрипт всегда будет проверять именно последнюю страницу
2) Скрипт понимает, когда сообщение оставляете именно вы
3) Даже если один пользователь оставил два разных сообщения или отредактировал старое - скрипт это поймёт и уведомит вас
4) Даже если два разных пользователя напишут два одинаковых сообщения - скрипт и это поймёт
5) Если новое сообщение оставлено на новой странице, даже в этом случае скрипт подгрузит именно сообщение с новой страницы и запомнит, что это уже новая страница
6) После подгрузки новых сообщений скрипт сам прокрутит страницу до самого низа
7) Скрипт использует минимум гет запросов - 1 при заходе на страницу и 1 каждые 25 секунд для проверки всех параметров. Третий гет запрос выполняется очень редко, в случаях, если новое сообщение оставлено на новой странице


От меня было добавлено:
1.Автоматическое добавление постов без перезагрузки
2.Кнопка "Обновить"
3.Слитие все в кучу.
Установка:

В Общем виде страниц форума после $BODY$:
Код
><?if($PAGE_ID$='main')?><style type="text/css">  
.gTopCornerRight {display:none;}  
</style>  
<script type="text/javascript" src="/fforum/toggleforums.js"></script><?endif?>
</div><?if$PAGE_ID$='threadpage' or $PAGE_ID$='addthread' or $PAGE_ID$='addpoll'?><script type="text/javascript">function haveFiles(){var f = false;$("input.uplFileFl").each(function(){if ($(this).val()) f=true;});return f}document.addform.onsubmit = function(){var namewnd = "w" + Math.floor(Math.random()*999); _uWnd.alert('<img src="/.s/img/wd/3/ajax.gif" border="0" alt="Загрузка">','Загрузка',{name: namewnd, w: 250, h: 80, tm: 0}); $("#frF16").attr("disabled", true); if (haveFiles()) {_uPostForm($("form[name='addform']"), {success: function(dt){ parseResult(dt, namewnd);}})} else {$.post("/forum", $("form[name='addform']").serialize(), function(dt) {parseResult(dt, namewnd)})};return false;};function parseResult(dt, namewnd){var err = $("#frM2", dt).text(), thmurl = $("a:first", dt).attr("href"); if (err) {_uWnd.content(namewnd, '<center>'+err+'</center>'); _uWnd.setTitle(namewnd, 'Ошибка'); $("#frF16").attr("disabled", false); setTimeout(function(){ _uWnd.close(namewnd) },2000);} else if ($(dt).text().indexOf("Ответ добавлен") > -1) { $("textarea#message").val(""); $("form[name='addform'] input:file").val(""); _uWnd.content(namewnd, '<center>Добавлено</center>'); _uWnd.setTitle(namewnd, 'Успех'); $("#frF16").attr("disabled", false); setTimeout(function(){ _uWnd.close(namewnd) },2000); setTimeout(function(){ <?if $PAGE_ID$='threadpage'?>$(".gDivRight:first").load(thmurl + "?" + Math.floor(Math.random()*9999) + " .gDivRight:first"); setPnt(thmurl);<?endif?><?if $PAGE_ID$='addthread' or $PAGE_ID$='addpoll'?>setPnt($("td.forumNamesBar:first a.forumBarA:last", dt).attr("href"), true);<?endif?>}, 50);} else { _uWnd.content(namewnd, 'Во время отправки произошла обишка'); _uWnd.setTitle(namewnd, 'Не удалось'); $("#frF16").attr("disabled", false); setTimeout(function(){ _uWnd.close(namewnd) },2000); }};</script><?endif?></div>
  <?if$PAGE_ID$='threadpage' or $PAGE_ID$='addthread' or $PAGE_ID$='addpoll'?><script type="text/javascript">function haveFiles(){var f = false;$("input.uplFileFl").each(function(){if ($(this).val()) f=true;});return f}document.addform.onsubmit = function(){var namewnd = "w" + Math.floor(Math.random()*999); _uWnd.alert('<img src="/.s/img/wd/3/ajax.gif" border="0" alt="Загрузка">','Загрузка',{name: namewnd, w: 250, h: 80, tm: 0}); $("#frF16").attr("disabled", true); if (haveFiles()) {_uPostForm($("form[name='addform']"), {success: function(dt){ parseResult(dt, namewnd);}})} else {$.post("/forum", $("form[name='addform']").serialize(), function(dt) {parseResult(dt, namewnd)})};return false;};function parseResult(dt, namewnd){var err = $("#frM2", dt).text(), thmurl = $("a:first", dt).attr("href"); if (err) {_uWnd.content(namewnd, '<center>'+err+'</center>'); _uWnd.setTitle(namewnd, 'Ошибка'); $("#frF16").attr("disabled", false); setTimeout(function(){ _uWnd.close(namewnd) },2000);} else if ($(dt).text().indexOf("Ответ добавлен") > -1) { $("textarea#message").val(""); $("form[name='addform'] input:file").val(""); _uWnd.content(namewnd, '<center>Добавлено</center>'); _uWnd.setTitle(namewnd, 'Успех'); $("#frF16").attr("disabled", false); setTimeout(function(){ _uWnd.close(namewnd) },2000); setTimeout(function(){ <?if $PAGE_ID$='threadpage'?>$(".gDivRight:first").load(thmurl + "?" + Math.floor(Math.random()*9999) + " .gDivRight:first"); setPnt(thmurl);<?endif?><?if $PAGE_ID$='addthread' or $PAGE_ID$='addpoll'?>setPnt($("td.forumNamesBar:first a.forumBarA:last", dt).attr("href"), true);<?endif?>}, 50);} else { _uWnd.content(namewnd, 'Во время отправки произошла обишка'); _uWnd.setTitle(namewnd, 'Не удалось'); $("#frF16").attr("disabled", false); setTimeout(function(){ _uWnd.close(namewnd) },2000); }};</script><?endif?>
  <script type="text/javascript">  
  stylebutton = 'font-weight:bold;background:#f8f8f8;border:1px solid #cbcbcb;color:#333;margin-left:3px;margin-right:3px;'; // стиль кнопки  
  $(document).ready(function() {$('.codeButtons').eq(2).after('<input type="button" style="'+stylebutton+'" title="Reload" value="Обновить сообщения" onclick="reloadforum()" class="codeButtons" id="email" /><span id="gl"></span>');});  
  function reloadforum() {href_l = location.href; // получаем ссылку на страницу  
  $('#gl').html('<img src="http://txtformat.ucoz.com/loadgen.gif" style="vertical-align:-5px;">')  
  scrop = $(".tru:last").text()  
  $('#stry').load(href_l+' #stry',function(data){  
  if(scrop == $(".tru:last",data).text()){_uWnd.alert('<center><font color="red">Новых постов на данной странице не найдено!</font></center>', 'Результат',{w:200, h:80})}  
  else{_uWnd.alert('<center><font color="blue">Сообщения подгружены</font></center>', 'Результат',{w:200, h:80})}  
  $(document).ready(function() {$('.codeButtons').eq(2).after('<input type="button" style="'+stylebutton+'" title="Reload" value="Обновить сообщения" onclick="reloadforum()" class="codeButtons" id="email" /><span id="gl"></span>');});  
  });  
  }  
  </script> </div>
  <img src="/images/apoL.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>  
// Умная подгрузка постов by Apocalypse  
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);  
//apo-ucoz.com (c) 2012  
   </script>  
   <?endif?>
 
  • Страница 1 из 1
  • 1
Поиск: