Добро пожаловать на форум!
Новые сообщения Участники Правила форума Поиск RSS
Статистика Форума
Последние обновленные темы Самые популярные темы Самые активные пользователи Новые участники
Болт (3758)
XemorDio (2726)
Skyline (2698)
Strelok41 (2177)
apaman [23.10.2017]
mogikan [23.10.2017]
MoDoStRoY [22.10.2017]
Lenin32422 [20.10.2017]
FLashstar169 [18.10.2017]
Страница 1 из 11
Форум » Web-раздел » Скрипты uCoz » Быстрая подгрузка постов на страницу без обновления
Быстрая подгрузка постов на страницу без обновления
XemorDio Дата: Суббота, 16.07.2016, 21:29 | Сообщение # 1
「 Рипер, техник сайта 」
Группа: Модераторы
Сообщений: 2726
Награды: 13 Репутация: 295
Статус: Offline

Скрипт разработан по просьбе пользователя 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?>
Hacuro Дата: Понедельник, 25.09.2017, 19:55 | Сообщение # 2
Группа: Свобода
Сообщений: 7
Награды: 0 Репутация: 0
Статус: Offline
вот это вот душевный скрипт добавление сообщений без перезагрузки страницы давно искал)
Есть подобный скрипт на добавление сообщений без обновления ст но он при добавлении сообщения выдает ошибку
а этот работает корректно 5 из 5 балов отлично 57 57
Форум » Web-раздел » Скрипты uCoz » Быстрая подгрузка постов на страницу без обновления
Страница 1 из 11
Поиск:
20:38
Обновить

Хостинг от uCoz | Design by XemorDio | MODSTALKER © 2009-2017