Прелоадер страницы на JavaScript

levi-de

Новичок
Прелоадер страницы на JavaScript

Добрый день.
Я написал на JavaScripte код, который делает прелоадер ко всей странице, но он работает только под Explorer.
Netscape & Opera ведут себя следующим образом:
они отображают картинку прелоадера, но после этого не показыватю основную страницу. То есть загрузка останавливается на прелоадере и грузить основную страницу не желает.

С чем это может быть связано?
Вот код

<html><Head>

<script language="javascript">
<!--
function preload(){
pr.style.visibility = "hidden";
ht.style.visibility = "visible";
setTimeout("preload()",3000);
}
// --></script>
</Head>


<body onLoad="javascript:preload()">

<div id="pr" style="visibility:visible>прелоадер</div>
<div id="ht" style="visibility:hidden;>содержимое страницы</div>

</body>
</html>




P.S. приношу извенение за вопрос, заданный не по теме форума
 

Vital_N

Новичок
>>С чем это может быть связано?
явно не с php а вообще нельзя обращаться к объекту напрямую через id
вместо pr.style.visibility = "hidden";
надо document.getElementById('pr').style.visibility = "hidden";

к тому же в Mozilla есть отличный инструмент JavaScript console - если что-то не работает - смотри туда
 

levi-de

Новичок
Ну, эффект остался, в принципе, тот же

Это всё не может быть из-за того, что Netscape просто не поддерживает скрипты подобного рода?

Есть ли какая-нибудь возможность программно определить через какой браузер просматривается страница?
 

Vital_N

Новичок
levi-de

вообще это не вопрос по php - здесь есть специально-обученный форум для таких дел

Если Netscape 3.0 GOLD то может конечно и не поддерживать, и посмотри в JavaScript console - может у тебя там вообще проблема в другом месте

К тому же не могу представить кто сейчас пользуется Netscape?

-~{}~ 19.01.05 16:39:

вообще у меня твой код работает, только ты там кавычки забыл закрыть кое-где, к тому же зачем ты вызываешь settimeout внутри определения самой функции,, если хочешь вызвать через
settimeout делай так
(работает в Firefox и Opera ) только что попробовал
<html><Head>

<script language="javascript">
<!--
function preload(){
document.getElementById('pr').style.visibility = "hidden";
document.getElementById('ht').style.visibility = "visible";

}
setTimeout("preload()",3000);

// --></script>
</Head>


<body>

<div id="pr" style="visibility:visible">прелоадер</div>
<div id="ht" style="visibility:hidden;">содержимое страницы</div>

</body>
</html>
если хочешь вызвать функцию по окончании загрузки делай onload но settimeout убирай
 

levi-de

Новичок
Да, вообще ты прав насчёт кавычек. А ведь заработало всё даже под Netscape.
Вот окончательный вариант кода, может кому надо будет

<html><Head>
<script language="javascript">
<!--
function preload(){
document.getElementById('pr').style.visibility = "hidden";
document.getElementById('ht').style.visibility = "visible";
}
// --></script>
</Head>
<Body onLoad="javascript:preload()">

<div id="pr" style="visibility:visible"><img src="await.gif"></div>
<div id="ht" style="visibility:hidden;">
содержимое страницы
</div>

</body>
</html>


А вот такой вопрос.
Как быть если у меня frames или iframe?

Можно, конечно засунуть отдельный прелоадер для каждой страницы. А как сделать так, что бы был один прелоадер для всех страниц?
 

SiMM

Новичок
Автор оригинала: levi-de
А вот такой вопрос.
Как быть если у меня frames или iframe?
Может ты наконец прекратишь морочить людям голову JavaScript'ом и HTML'ем в форуме по PHP?
 

levi-de

Новичок
Я ведь уже извинился за мессаги не по теме. Просто это самый приличный, на мой взгляд, форум, где тебе гарантированно помогут, тем более, что люди знающие и по моему скромному мнению им ничего не стоит помочь.
 

SiMM

Новичок
Самый приличный форум по ответам на твои заданные здесь вопросы, всё же, наверно, прячется где-то здесь ;)
 
Сверху