мне помогло вот это
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* %{SERVER_NAME}%{REQUEST_URI} [R=301,L]
  • avatar lifecom
  • 0
Пока применил такое решение (без посторонних js):
В этом файле (строки 8 и 21) вместо {$oTopic->getTextShort()} и {$oTopic->getText()} прописываем соответственно:
{$oTopic->getTextShort()|replace:'<img':'<img loading="lazy"'}
{$oTopic->getText()|replace:'<img':'<img loading="lazy"'}


Работает в новых браузерах благодаря поддержке атрибута loading и благодаря Smarty-функции replace
  • avatar lifecom
  • 0
Хотя вот так работает:
this.getMoreAll = function () {
    if (this.isBusy) {
        return;
    }
    var lastId = $('#stream_last_id').val();
    if (!lastId) return;
    $('#stream_get_more').addClass('stream_loading');
    this.isBusy = true;

    var url = aRouter['stream']+'get_more_all/';
    var params = {'last_id':lastId,'date_last':this.dateLast};

    ls.hook.marker('getMoreAllBefore');
    ls.ajax(url, params, function(data) {
        if (!data.bStateError && data.events_count) {
            var scroll = $(window).scrollTop(); // ДОБАВЛЕНО
            $('#stream-list').append(data.result);
            $('#stream_last_id').attr('value', data.iStreamLastId);
            $(window).scrollTop(scroll); // ДОБАВЛЕНО
        }
        if (!data.events_count) {
            $('#stream_get_more').hide();
        }
        $('#stream_get_more').removeClass('stream_loading');
        ls.hook.run('ls_stream_get_more_all_after',[lastId, data]);
        this.isBusy = false;
    }.bind(this));
};


Вот бы теперь это «прикрутить» в объекте ajax для всех методов сразу через хуки.
  • avatar lifecom
  • 0
Хоть как-то разбудить сообщество))
По сути решение неполноценное. т.к. мы лишаемся новой фичи.
Я попытался вставить сюда var scroll = $(window).scrollTop();
А после подгрузки опять вернуть это значение $(window).scrollTop(scroll);
Но почему-то не работает. Может поможете? ;)
  • avatar sersar
  • 0
Не поленился написать =)
zomro.com
я тоже за зомро))))
более нормальный из моих 3 хостов — это зомро
я лично за зомро размещаю проекты и проблем не знаю
на зомро попробуй
zomro.com
Я на зомро размещаюсь уже пол года. Не дорого и адекватная поддержка
  • avatar dex-
  • 0
Код рабочий. Проверено на Chrome и Firefox.
  • avatar lifecom
  • 0
И, кстати, залогиниться сюда удалось только через edge ;)
  • avatar lifecom
  • 0
Использую браузер Vivaldi (Chromium-based).
Как это ни парадоксально — но картинки все равно грузятся. Скрипт вроде отрабатывает. Я даже попробовал не подключать lazyload(images); — и даже в этом случае они грузятся, хоть и не отображаются (т.к. у них уже нет src).
Хотя описание DOMContentLoaded говорить об обратном ¯\_(ツ)_/¯


Попробовал другие браузеры (все последних версий):
Firefox — картинки грузятся сразу
Chrome — картинки грузятся сразу
Opera — картинки грузятся сразу
MS Edge — и о чудо! Все отработало как надо!


Видимо браузеры «чудят»…
  • avatar dex-
  • 0
Наличие класса «lazyload» на примере не обязательно. Выборка производится селектором imgSelector
  • avatar dex-
  • 0
Насчет DOMContentLoaded можете почитать по ссылке. Картинки при DOMContentLoaded не будут загружены, а уйдут в canceled, потому что при load у них уже не будет src.
  • avatar dex-
  • 0
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
 <script>
  //  Селектор для узконаправленного применения,
  //  например внутри поста
  let imgSelector = '.post__content img';

  window.addEventListener("DOMContentLoaded", () => {      
    let images = document.querySelectorAll(imgSelector);

    images.forEach( (element) => {
      let imgSrc = element.getAttribute('src');
      element.removeAttribute('src');
      element.setAttribute('data-src', imgSrc);
    })
  });
 </script>
</head>
<body>
  <div class="post__content">
    <img src="//via.placeholder.com/200x200/" alt="" class="lazyload">
    <img src="//via.placeholder.com/300x300/" alt="" class="lazyload">
  </div>
  <img src="//via.placeholder.com/100x100/" alt="">

  <!-- Пример скрипта из твоего поста -->
  <script src="https://cdn.jsdelivr.net/npm/lazyload@2.0.0-rc.2/lazyload.js"></script>
  <script>
      let images = document.querySelectorAll(imgSelector);
      lazyload(images);
  </script>
</body>
</html>
  • avatar lifecom
  • 1
Затестил, поэтому распишу детальнее решение sersar :
Эту строку нужно заменить на эту
  • avatar sersar
  • 1
В шаблоне добавь проверку переменной:
{if is_array(переменная) and count(переменная)}