Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Глюк с setInterval при нажатии back в Opera 9.22


Автор: Greendrake 22.7.2007, 22:36
Обнаружил весьма престранный глюк в Opera 9.22 (в Opera 8.5 с этим нормально).
Имеем тестовую страницу:

Код

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Opera setInterval bug?</title>
    <script type="text/javascript" language="JavaScript">
      function foo(){
        document.getElementById('foo').innerHTML = String(Math.random()).substr(2);
      };
    </script>
  </head>
  <body onload="window.setInterval(foo, 200);">
    <div id="foo"></div>
    <hr>
    <a href="#hash">Hash</a>
    <hr>
    <input type="button" value="Alert" onclick="alert('Alert')">
  </body>
</html>


При её загрузке устанавливается интервал, через который вызывается функция. Тот факт, что интервал работает, отображается меняющимися цифрами на странице.

Нажимаем на ссылку Hash. После этого жмём кнопку Back браузера. Видим: адрес вернулся в исходное положение (без якоря), но интервал перестал работать! Чтобы продолжить его работу, оказывается достаточным вызвать и закрыть окно сообщения (жмём кнопку Alert для этого).

Сей глюк я обнаружил в версиях Opera 9.22 (последняя на текущий момент) и 9.20. В версии 8.5 глюка нет (интервал продолжает работать при нажатии Back). В FireFox (и даже в Safari) этой проблемы нет. IE не актуален, т. к. в данном примере он не заносит переход по хешу в history.

Будут какие-нибудь соображения касательно причин и способов борьбы с сабжем-глюком?

Автор: Zeroglif 23.7.2007, 00:10
Greendrake

подтверждаю, на 9.22 останавливается сразу. На предыдущих версиях у меня тоже может остановиться, но не сразу, а если туда сюда хаотически попереключаться. Поиск показал, что такое странное поведение http://forum.myopera.net/showflat.php?Cat=&Number=32129&Main=32116.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)