Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Перезагрузка происходит несколько раз подряд
 
 автор: RadjaxteN   (02.09.2006 в 15:28)   письмо автору
 
 

Я не очень хорошо разбираюсь в JavaScript, поэтому спрашиваю: Этот скриптперезагружает страницу после завершения действия скриптов. Но почему когда я нажимаю на любую другую сылку, иногда он несколько раз перегружает данную страницу ?????

<script>   
function f() 

  var pl = document.getElementById('pl'); 

  if(pl && pl.readyState=='complete' && pl.PlayState=='0') 
  { 
    window.location.reload(); 
      return;
  } 
  setTimeout('f()',1200); 
}
</script>

   
 
 автор: Евгений Петров   (02.09.2006 в 15:31)   письмо автору
 
   для: RadjaxteN   (02.09.2006 в 15:28)
 

Попробкйте сбрасывать таймер:
<script>    
var timer = null;
function f()  
{
  if(timer != null) clearTimeout(timer);
  var pl = document.getElementById('pl');  

  if(pl && pl.readyState=='complete' && pl.PlayState=='0')  
  {  
    window.location.reload();  
      return; 
  }  
  timer = setTimeout('f()',1200);  

</script>

   
 
 автор: RadjaxteN   (02.09.2006 в 15:48)   письмо автору
 
   для: Евгений Петров   (02.09.2006 в 15:31)
 

Спасибо! Хотя всё-таки глюк остаётся, но теперь намного реже.

   
 
 автор: Евгений Петров   (02.09.2006 в 16:04)   письмо автору
 
   для: RadjaxteN   (02.09.2006 в 15:48)
 

А если сбрасывать прям перед тайемром?
...
if(timer != null) clearTimeout(timer); 
timer = setTimeout('f()',1200);

   
 
 автор: RadjaxteN   (02.09.2006 в 16:16)   письмо автору
 
   для: Евгений Петров   (02.09.2006 в 16:04)
 

Нет... Всё так же....

   
 
 автор: RMW   (02.09.2006 в 17:02)   письмо автору
 
   для: RadjaxteN   (02.09.2006 в 16:16)
 

Да, видать таймер надо сбрасывать и наверное привязывать
это дело придётся к каждой конкретной ссылке.
Вот, кстати, последняя версия скрипта, здесь
сброс таймера происходит в функции fs(),
и к тому же если музыкальный файл по какой-то причине не
сможет быть воспроизведён обновление происходить не будет.

<html> 
<head> 
<script>
var c,tm;
function AutoReload() 

  var embd = document.getElementById('_embd');

  if(embd.readyState==('complete' || 4))
  {
    if(embd.PlayState==2)c=true;
    if(embd.PlayState==0) 
    { 
      if(c)window.location.reload(); 
      return; 
    }
  }
  tm = setTimeout('AutoReload()',1000); 


window.onload = AutoReload;

function fs()
{
  clearTimeout(tm);


</script> 
</head> 
<body> 

<embed src="0078.mid" autoplay="true" hidden="true" id="_embd"> 
<a href="http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=23846" onclick="fs()">Перейти по ссылке</a>
</body> 
</html>

   
 
 автор: RadjaxteN   (02.09.2006 в 17:37)   письмо автору
 
   для: RMW   (02.09.2006 в 17:02)
 

Если я правильно понял, то [onclick="fs()"] надо прописывать в каждой сылке?

   
 
 автор: RadjaxteN   (02.09.2006 в 17:48)   письмо автору
 
   для: RadjaxteN   (02.09.2006 в 17:37)
 

И ещё, в этой строке не хватает какого-то обьекта, говорит браузер:

 if(embd.readyState==('complete' || 4)) 

   
 
 автор: RMW   (02.09.2006 в 18:49)   письмо автору
 
   для: RadjaxteN   (02.09.2006 в 17:48)
 

Ну, не знаю, моему всех объектов хватает.
Наверное это из-за того, что предполагается, что id эмбеда
будет "_embd".
Впрочем лишняя проверка никогда не повредит :)
и можно строчку переделать к прежнему виду:

if(embd && embd.readyState==('complete' || 4))

В этом случае скрипт хоть и не отработает, но и ошибку не вызовет.
И ещё надеюсь ты знаешь, что embed это не есть кросс-браузерное
решение, в опере например работать уже не будет.
А onclick="fs()" нужно ставить в каждой ссылке, ничего другого
пока предложить не могу.
Но наверное можно и как-то иначе сделать.

   
 
 автор: RadjaxteN   (02.09.2006 в 19:00)   письмо автору
 
   для: RMW   (02.09.2006 в 18:49)
 

А есть какая-нибудь альтернатива для воспроизведения музыкальных файлов во всех браузерах?

   
 
 автор: RadjaxteN   (03.09.2006 в 12:32)   письмо автору
 
   для: RadjaxteN   (02.09.2006 в 19:00)
 

Вот это - скрипт для перезагрузки страницы после завершения всего кода:

<script> 
function f() 

 var pl = document.getElementById('pl');   

  if(pl && pl.readyState=='complete' && pl.PlayState=='0')   
  {   
    window.location.reload();   
      return;  
  }   
  timer = setTimeout('f()',1200);   
}  
</script>

Но вот эта функция не выполняет тогоже назначения:

<script> 
var c,tm; 
function AutoReload()  
{  
  var embd = document.getElementById('_embd'); 

  if(embd && embd.readyState==('complete' || 4)) 
  { 
    if(embd.PlayState==2)c=true; 
    if(embd.PlayState==0)  
    {  
      if(c)window.location.reload();  
      return;  
    } 
  } 
  tm = setTimeout('AutoReload()',1000);  
}  

window.onload = AutoReload; 

function fs() 

  clearTimeout(tm); 
}  

</script>

Как сделать, чтобы второй скрипт перезагружал страницу после :

<embed src="song.mp3" autoplay="true" id="pl" width=314 height=45>
</embed>

   
 
 автор: RMW   (03.09.2006 в 12:39)   письмо автору
 
   для: RadjaxteN   (03.09.2006 в 12:32)
 

Да оставь первый не суть важно,
а вообще поменяй id
Например в функции
var embd = document.getElementById('pl');

   
 
 автор: RadjaxteN   (03.09.2006 в 12:45)   письмо автору
 
   для: RMW   (03.09.2006 в 12:39)
 

Всё, спасибо огромное, теперь всё работает. :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования