Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Что же происходит на странице когда нас нет ? (https://javascript.ru/forum/offtopic/21449-chto-zhe-proiskhodit-na-stranice-kogda-nas-net.html)

nyols 09.09.2011 16:58

Что же происходит на странице когда нас нет ?
 
Не знал как назвать тему, так что будем довольствоваться тем что есть :)

Очень часто происходят глюки в работе скриптов, когда мы находимся на другой вкладке а не на той где выполняется скрипт (обычно это анимация).

Вот маленький список тем с такой проблемой:
http://javascript.ru/forum/jquery/21...y-skripta.html
http://javascript.ru/forum/jquery/19...nimaciejj.html
http://javascript.ru/forum/events/18...i-vkladki.html
http://javascript.ru/forum/jquery/21...nojj-okna.html

Таких тем естественно больше.
Суть проблемы у всех одна:
Скрипт (как уже говорил обычно это анимация) начинает глючить если на какое то время перейти на другую вкладку и потом вернутся назад.

У меня тоже такая проблема была. К счастью я ее решил :)

Суть темы: Так что же на самом деле браузер делает с нашим скриптом когда мы не смотрим на страницу ?
Просто интересно.

B~Vladi 09.09.2011 21:01

Цитата:

Сообщение от nyols
К счастью я ее решил

Цитата:

Сообщение от nyols
Так что же на самом деле браузер делает с нашим скриптом когда мы не смотрим на страницу ?

Так ты же решил - вот и поделись с обществом. А вообще, всем известно, что setInterval не вызывается в неактивной вкладке.

Андрей Параничев 09.09.2011 21:28

Если анимация привязана к времени и используется "хвостовой таймер", а интервал просто запускает обработчик с шагом по изменению величины, то проблем быть не должно, я правильно понимаю?

И разве jQuery не использует window.requestAnimationFrame?

B~Vladi 09.09.2011 22:39

Цитата:

Сообщение от Андрей Параничев
И разве jQuery не использует window.requestAnimationFrame?

С 1.6 должна была использовать.
Оффтоп, но меня в анимации больше всего напрягает что нельзя гарантировать, что общее время анимации будет ровно столько, сколько нам надо. Всегда больше на несколько мс.
Мелочь, понимаю.

Octane 09.09.2011 22:44

В версии 1.6.3 вроде убрали requestAnimationFrame

-----------
да точно убрали
Цитата:

Сообщение от jQuery blog
No more animation “worm holes”: We had high hopes for the browser’s requestAnimationFrame API when we added support into version 1.6. However, one of the highest-volume complaints we’ve received since then relates to the way requestAnimationFrame acts when a tab is not visible. All the animations initiated when the tab is invisible “stack” and are not executed until the tab is brought back into focus. Then they all animate at warp speed! We’ve removed support for this API (which has no impact on the way you call jQuery’s animation features) and plan to incorporate it into a future version of jQuery.

http://blog.jquery.com/2011/09/01/jq...-6-3-released/

B~Vladi 09.09.2011 22:50

Да, надо его допиливать. У меня, на не самом последнем железе, это демо лагает 2-3 раза в секунду (последний FF).

nyols 09.09.2011 23:45

Цитата:

Сообщение от B~Vladi
Так ты же решил - вот и поделись с обществом.

Я использовал JQuery, и от избавления такого клюка перед вызовом новой анимации останавливать прежнею .stop() Хотя вроде и без этого работала, но была эта самая проблема. .stop() помог. А вот в чем была причина так и не понял.
Цитата:

Сообщение от B~Vladi
А вообще, всем известно, что setInterval не вызывается в неактивной вкладке.

Не знал)) именно используя setInterval я и делал анимацию.

crayday 10.09.2011 00:11

Цитата:

Сообщение от nyols (Сообщение 125841)
Не знал)) именно используя setInterval я и делал анимацию.

И jQuery делает также =)
setInterval вызывается на неактивной вкладке, но не чаще 1 раза в секунду (во современных браузерах).

float 10.09.2011 00:57

Цитата:

У меня, на не самом последнем железе, это демо лагает 2-3 раза в секунду (последний FF).
посмотри на сеттаймауте и всё поймёшь
зы зато в осле не лагает:) в смысле это не шутка...
Цитата:

да точно убрали
я тож пробовал заюзать, но там чот с отменой косяки...

B~Vladi 10.09.2011 01:29

Цитата:

Сообщение от nyols
А вот в чем была причина так и не понял.

Мораль: создавать велосипед - полезно.
Цитата:

Сообщение от crayday
setInterval вызывается на неактивной вкладке, но не чаще 1 раза в секунду (во современных браузерах).

Ну вот, опять всё поменяли :(
Цитата:

Сообщение от float
посмотри на сеттаймауте и всё поймёшь

И что я должен понять?


Часовой пояс GMT +3, время: 16:01.