Скрипт выполняется не на всех устройствах?
а) Вероятно, один из компонентов страницы не прогрузился до конца.
https://learn.javascript.ru/onload-ondomcontentloaded
Есть несколько разных обработчиков, и они срабатывают на разную полноту контента страницы.
На плоскости JQuery такое же разнообразие.
front-end.su/2016/02/12/load-events
б) if(!preloader.classList.contains('done'))
Хотите большую поддержку браузерами и с легкой руки используете свежие методы: classList.
Разработчик обязан страдать, применяя решения и используя более устаканенные методы, если хочет широкий охват поддержки браузерами:if(preloader.getAttribute('class').indexOf('done') == -1)
PS: Или не обязан, если подключить JQuery.)
document.body.onload
вы так все события убиваете на странице, и с тем же успехом наоборот кто-то может перебить ваше.window.addEventListener("load", function(event) {
    console.log("All resources finished loading!");
  });