Выполнение JS после загрузки всех ресурсов, есть ли событие?
Я заметил, что обычный alert("Text"); может успеть выполняться до отрисовки фона сайта, тем самым поставив на паузу саму отрисовку. И ни помещение скрипта перед </body>, ни window.onload, ни $(document).ready(function(){}), ни комбинации этих решений не отменят такого поведения. Так как же заставить скрипт выполняться после всего выполнения html и css на сайте (конкретно, после отрисовки всего экрана)? Есть вариант с таймером на секунду и не-вариант с перечеслением всего, что должно догрузиться до начала скрипта (ибо этого чего абстрактно в вакууме может быть много), но должно же быть более лаконичное решение приказать JS ожидать отрисовки фона/загрузки тяжёлого ресурса/выполнения других скриптов.
onload и ready() - как раз то, что вам нужно. А то, что alert вызывается до отрисовки - это баг Chrome, во всех остальных браузерах нормально, и проявляться баг будет только с alert.
К слову, благодаря вам решил затестить. Opera/Opera Neon тоже имеет поведение, как у Chrome, но в отличии от последнего хоть как-то меняет поведение при defer (сперва выполняет лёгкий скрипт на белом фоне, а потом хоть что-то отрисовывает). Edge работает, но так медленнно, как будто у него самого есть таймер на 1 секунду.) А IE сперва показывает сайт и спрашивает, можно ли включить скрипты, а потом уже перезагружает и делает всё правильно - какой тактичный.)
Окна сообщений - модальные, они препятствуют получению пользователем доступа к другим частям страницы до тех пор, пока окно не будет закрыто. По этой причине, вам не следует злоупотреблять этой функцией.