Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.07.2015, 22:07
Аспирант
Отправить личное сообщение для alecto Посмотреть профиль Найти все сообщения от alecto
 
Регистрация: 12.11.2014
Сообщений: 84

Помогите адаптировать скрипт к аякс-обновлению страницы
Есть скрипт коллажа, которые работает при обычной загрузке страницы
$(window).load(function () {
      collage();
   });


   function collage() {
      $('.Collage').collagePlus(
      {
         'fadeSpeed' : 2000,
         'targetHeight'    : 300,
         'allowPartialLastRow' : true,
      });
   }

   var resizeTimer = null;
   $(window).bind('resize', function() {
      $('.Collage img').css("opacity", 0);
      if (resizeTimer) clearTimeout(resizeTimer);
      resizeTimer = setTimeout(collage, 200);
   });

но, этот скрипт перестает работать при аякс-перезагрузке данных на странице.
автор расширения PHPBB3 сделал FAQ и описание, "Как подружить это расширение с другим?" http://www.phpbbguru.net/community/topic44157.html

Т.е. надо встроить имеющийся скрипт в следующую обертку...

Цитата:
Шаблон фикса, согласно FAQ по ссылке:
Если какое-то расширение добавляет JavaScript-функционал для сообщений, то этот функционал нужно обернуть в функцию:
function FUNCTION_NAME(e, elements) {
// Код функции.
}

После этого добавить:
$(document).ready(function (e) {
   FUNCTION_NAME(e, $(document));
});
$('#qr_posts').on('qr_loaded', FUNCTION_NAME);

Если JavaScript-функционал добавляется для содержимого сообщений (например, текста или картинок), то после этого нужно также добавить (возможно, в доработанном виде):
$('#qr_postform').on('ajax_submit_preview', function (e) {
   FUNCTION_NAME(e, $('#preview'));
});
С более простым скриптом я разобрался самостоятельно, с этим, простой оберткой
$('#qr_posts').on('qr_loaded', function (e, elements) {
      collage();
   });

дело не обошлось, надо как-то заворачивать тот код, что $(window).bind...
самостоятельно справиться не могу, прошу помощи.
Ответить с цитированием
  #2 (permalink)  
Старый 24.07.2015, 22:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

alecto, загрузили данные запустили collage() и всё
Ответить с цитированием
  #3 (permalink)  
Старый 24.07.2015, 22:54
Аспирант
Отправить личное сообщение для alecto Посмотреть профиль Найти все сообщения от alecto
 
Регистрация: 12.11.2014
Сообщений: 84

$(window).load(function () {
      collage();
   });


   function collage() {
      $('.Collage').collagePlus(
      {
         'fadeSpeed' : 2000,
         'targetHeight'    : 300,
         'allowPartialLastRow' : true,
      });
   }

   var resizeTimer = null;
   $(window).bind('resize', function() {
      $('.Collage img').css("opacity", 0);
      if (resizeTimer) clearTimeout(resizeTimer);
      resizeTimer = setTimeout(collage, 200);
   });
   $('#qr_posts').on('qr_loaded', function (e, elements) {
      collage();
   });

так не работает.
или я не понимаю, что надо делать.

Последний раз редактировалось alecto, 24.07.2015 в 23:17.
Ответить с цитированием
  #4 (permalink)  
Старый 24.07.2015, 23:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

alecto,
$.ajax({
url: '......',
success: function(){
.... сюда collage(); }
});
Ответить с цитированием
  #5 (permalink)  
Старый 24.07.2015, 23:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

alecto,
после ajax пробовали изменить экран? работает collagePlus или нет?
Ответить с цитированием
  #6 (permalink)  
Старый 24.07.2015, 23:51
Аспирант
Отправить личное сообщение для alecto Посмотреть профиль Найти все сообщения от alecto
 
Регистрация: 12.11.2014
Сообщений: 84

по привиденному мной коду: после аякса изображения не отображаются, реакции на изменение размера нет.
вот пример: заходите через вторую страницу, затем аяксом переходите на первую.
http://motobratva.com/viewtopic.php?...=5142&start=10
коллаж в первом сообщении под картинкой.
если нажать F5 на первой странице - коллаж будет виден.

если же не добавлять код
$('#qr_posts').on('qr_loaded', function (e, elements) {
	      collage();
	   });

то при всех тех же действиях (с 2 страницы на 1) и изменении размера окна - картинки появляются.
вмешаться в работу расширения не получится, т.е. адаптировать под аякс придется ту часть, которая доступна мне, т.е. скрипт включения колллажа.

по вашему коду постом выше - простите великодушно, вообще ничего не понял.

Последний раз редактировалось alecto, 24.07.2015 в 23:55.
Ответить с цитированием
  #7 (permalink)  
Старый 25.07.2015, 00:09
Аспирант
Отправить личное сообщение для alecto Посмотреть профиль Найти все сообщения от alecto
 
Регистрация: 12.11.2014
Сообщений: 84

приведу для примеру:
был работающий код, который переставал работать при смене страниц аяксом
$(document).ready(function() {
      var scr_w = $(this).width();
      var scr_h = $(this).height();
      if (scr_w > 800 && scr_h > 600) {
         $("dl.thumbnail a").addClass("highslide").attr("onclick", "return hs.expand(this)");
      }
      });

после доработки согласно инструкции автора до такого вида - все работает.
function HighSlideAttachments(e, elements) {
         var scr_w = $(this).width();
         var scr_h = $(this).height();
         if (scr_w > 800 && scr_h > 600) {
            $("dl.thumbnail a").addClass("highslide").attr("onclick", "return hs.expand(this)");
         }
      }

      $(document).ready(function (e) {
         HighSlideAttachments(e, $(document));
      });

      $('#qr_posts').on('qr_loaded', HighSlideAttachments);

приведенный выше код коллажа, поидее, можно исправить аналогичным образом, но он более сложен для меня и, вроде бы должен работать, но никак не хочет.

Последний раз редактировалось alecto, 25.07.2015 в 00:12.
Ответить с цитированием
  #8 (permalink)  
Старый 25.07.2015, 00:22
Аспирант
Отправить личное сообщение для alecto Посмотреть профиль Найти все сообщения от alecto
 
Регистрация: 12.11.2014
Сообщений: 84

на всякий случай попробовал вот такой вариант - тоже безрезультатно
function collage() {
      $('.Collage').collagePlus(
      {
         'fadeSpeed' : 2000,
         'targetHeight'    : 300,
         'allowPartialLastRow' : true,
      });
   }

   var resizeTimer = null;
   $(window).bind('resize', function() {
      $('.Collage img').css("opacity", 0);
      if (resizeTimer) clearTimeout(resizeTimer);
      resizeTimer = setTimeout(collage, 200);
   });

      function CollageOnAjaxPage(e, elements) {
	      collage();
      }

      $(document).ready(function (e) {
         CollageOnAjaxPage(e, $(document));
      });

      $('#qr_posts').on('qr_loaded', CollageOnAjaxPage);
Ответить с цитированием
  #9 (permalink)  
Старый 25.07.2015, 01:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от alecto
этот скрипт перестает работать при аякс-перезагрузке данных на странице.
что такое скрипт перестаёт работать и что такое аякс-перезагрузка данных -- неосилил - помочь не могу извини.
вариант на последок пальцем в небо
$('#qr_posts').on('qr_loaded', $(window).resize);

для меня слишком сложно что вы творите
Сообщение от alecto
attr("onclick", "return hs.expand(this)");
Ответить с цитированием
  #10 (permalink)  
Старый 25.07.2015, 08:17
Аспирант
Отправить личное сообщение для alecto Посмотреть профиль Найти все сообщения от alecto
 
Регистрация: 12.11.2014
Сообщений: 84

спасибо за попытку помочь.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подгрузить скрипт в тело страницы через javascript aleksandr8i Javascript под браузер 10 30.12.2016 21:10
Помогите написать скрипт для корзины Deep Элементы интерфейса 1 19.06.2010 14:46
Помогите сделать скрипт! b1shop Opera, Safari и др. 4 21.05.2010 13:54
Помогите настроить скрипт раскрывающегося меню melomanfm Работа 6 10.08.2009 01:21