как я понимаю у вас 2 условия для скрытия прелоадера:
1) по прошествии 10 секунд.
2) при полной загрузке страницы.
Предлагаю переделать функцию:
function fadePreLoader(el) {
if (isVisiblePreloader) {
el.style.opacity = 1;
var interPreLoader = setInterval(function () {
el.style.opacity = el.style.opacity - 0.05;
if (el.style.opacity <= 0.05) {
clearInterval(interPreLoader);
preLoader.style.display = "none";
}
}, 16);
isVisiblePeloader = false;
}
}
и после самого прелоадера начать отсчет:
<div id="before-load"></div>
<script>
var preLoader = document.getElementById("before-load");
isVsiblePreloader = true;
setTimeout(function () {
fadePreLoader(preLoader);
}, 10000);
</script>
и добавить второе наше условие при полной загрузке:
window.onload = function () {
fadePreLoader(preLoader);
};
В итоге функция все-равно будет выполняться два раза: но в первый раз она скроет прелоадер и присвоит
isVisiblePeloader = false;
, что предотвратит скрытие прелоадера второй раз.