никак , на сколько я знаю
Как универсально ускорить "Ждать полной загрузки страницы"
-
Дай сниппет плиз если есть уже такое протесченное?)
Я так понимаю ты про это
switch (document.readyState) { case "loading": // The document is still loading. break; case "interactive": // The document has finished loading. We can now access the DOM elements. // But sub-resources such as scripts, images, stylesheets and frames are still loading. const span = document.createElement("span"); span.textContent = "A <span> element."; document.body.appendChild(span); break; case "complete": // The page is fully loaded. console.log("The first CSS rule is: " + document.styleSheets[0].cssRules[0].cssText); break; }если правильно понял, в случае если сайт это сплошной SPA - то интерактив может не отработать та как надо, потому что какой-то недогруженный JS мог в себе иметь какой-то нужный html который не успеет впилиться в dom, а событие уже сработает и скрипт продолжит работу )
-
@centerdevs said in Как универсально ускорить "Ждать полной загрузки страницы":
если правильно понял, в случае если сайт это сплошной SPA - то интерактив может не отработать та как надо, потому что какой-то недогруженный JS мог в себе иметь какой-то нужный html который не успеет впилиться в dom, а событие уже сработает и скрипт продолжит работу )
Все это костылями можно проверить после интерактива. Кол-во элементов на странице и т.д. При скорости интернета 20 мб+ вообще не возникает проблем, но это явно лучше чем комплит, один маленький запрос не ушёл и просто зря провисишь. Да и человек не ждет пока все запросы не уйдут.
-
@FastSpace Ну шо ты дразнишь?)) Дай в паблик это :)
-
@centerdevs Это уже паблик :) вон там написано же все. Ява скрипт вызови прост document.readyState получишь статус.
-
@FastSpace согласен) уже делаю, спасибо за наводку :)
-
@FastSpace реализовал, пока что работает кривовато...
Бывает после клика по элементу с dom еще ничего не началось и readyState отвечает complete. Ты юзаешь обязательную задержку перед началом проверок?

Вот дефолтные настройки. По ним я думаю ты понял алгоритм работы ) + если interactive то есть условие на количество елементов между двумя последними итерациями проверки, если количество сошлось - значит делаем вывод что страница прогружена даже при статусе interactive.
-
@centerdevs said in Как универсально ускорить "Ждать полной загрузки страницы":
@FastSpace реализовал, пока что работает кривовато...
Бывает после клика по элементу с dom еще ничего не началось и readyState отвечает complete. Ты юзаешь обязательную задержку перед началом проверок?
Я знаю, там еще много приколов будет.
Оно и не должно выполнятся, т.к клик возможно был на элемент который не предполагает загрузок (выпадающие списки и т.д)
Задержек никаких нет, они и не нужны. -
@FastSpace Дай совет ) Что еще важно реализовать? Пока она не особо юзабельно получается, я заменил везде свои "ждуны" и естесвенно получилась анархия в работе скрипта) вернул обратно, а скрипт большой я даже хз с чего начинать, надо каждый случай отдельно рассматривать + каждый фикс делать чтобы не поломать что-то другое )
-
@centerdevs said in Как универсально ускорить "Ждать полной загрузки страницы":
@FastSpace Дай совет ) Что еще важно реализовать? Пока она не особо юзабельно получается, я заменил везде свои "ждуны" и естесвенно получилась анархия в работе скрипта) вернул обратно, а скрипт большой я даже хз с чего начинать, надо каждый случай отдельно рассматривать + каждый фикс делать чтобы не поломать что-то другое )
Там много всего, готовое решение не даю и 20+ случаев не распишу, но куда копать рассказал.
-
@FastSpace вроде допилил и стало лучше, но еще не идеал... ты ловишь глобально все ajax запросы и их состояние, помимо простого readyState на документ?
-
Протестил, реально при отправке ajax запроса, статус идёт как complete и dom не меняется. То есть надо еще ловить эти события и ждать пока они получат ответ, и тогда можно делать вывод о том страница догружена. В соседней ветке пытаюсь понять как передать из яваскрипта значение в бас переменные и буду двигаться дальше )
-
@centerdevs как допилите поделитесь?
-
@lotra в личку скину, потому что @FastSpace мне даст по хребту )
-
@centerdevs Это ваши личные наработки, и никакой другой человек вам тут не указ. Хотите - выкладывайте в паблик, не хотите - оставляйте себе. То, что вы немного улучшили стандартные механизмы БАСа, не добавит вам +100500% конкуренции, а лишь немного улучшит другим людям жизнь в случае публикации наработок
-
@DoctorKrolic Полностью согласен, но мне никто и не указывал ничего, FastSpace дал сразу все наводки что и как делать, сам прямо заявил что своё решение в паблик не хочет давать, чисто из солидарности я решил что выкладывать в таком случае тоже не буду. По сути я делаю чисто механическую работу по его косвенным и прямым указаниям )
-
@centerdevs буду благодарен если сделаете.
-
@centerdevs правильно, незачем выкладывать, кому надо тот сам сделает, я этим вопрос ещё 3 года назад на форуме задался, такой дичи в теме понаписали "советчики" 😟
Этот интерактив решает ещё до кучи проблем, в виде повторного лоада без багов и т.д. Этот баг там уже несколько лет висит :)