09.09.2011, 16:58
|
Кандидат Javascript-наук
|
|
Регистрация: 16.02.2011
Сообщений: 134
|
|
Что же происходит на странице когда нас нет ?
Не знал как назвать тему, так что будем довольствоваться тем что есть
Очень часто происходят глюки в работе скриптов, когда мы находимся на другой вкладке а не на той где выполняется скрипт (обычно это анимация).
Вот маленький список тем с такой проблемой:
Подвисание работы скрипта
jquery, глюк с анимацией...
jquery слайдер, анимация при переключении вкладки
Баг со сменой окна.
Таких тем естественно больше.
Суть проблемы у всех одна:
Скрипт (как уже говорил обычно это анимация) начинает глючить если на какое то время перейти на другую вкладку и потом вернутся назад.
У меня тоже такая проблема была. К счастью я ее решил
Суть темы: Так что же на самом деле браузер делает с нашим скриптом когда мы не смотрим на страницу ?
Просто интересно.
|
|
09.09.2011, 21:01
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от nyols
|
К счастью я ее решил
|
Сообщение от nyols
|
Так что же на самом деле браузер делает с нашим скриптом когда мы не смотрим на страницу ?
|
Так ты же решил - вот и поделись с обществом. А вообще, всем известно, что setInterval не вызывается в неактивной вкладке.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
09.09.2011, 21:28
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
Если анимация привязана к времени и используется "хвостовой таймер", а интервал просто запускает обработчик с шагом по изменению величины, то проблем быть не должно, я правильно понимаю?
И разве jQuery не использует window.requestAnimationFrame?
Последний раз редактировалось Андрей Параничев, 09.09.2011 в 21:30.
|
|
09.09.2011, 22:39
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от Андрей Параничев
|
И разве jQuery не использует window.requestAnimationFrame?
|
С 1.6 должна была использовать.
Оффтоп, но меня в анимации больше всего напрягает что нельзя гарантировать, что общее время анимации будет ровно столько, сколько нам надо. Всегда больше на несколько мс.
Мелочь, понимаю.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
09.09.2011, 22:44
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
В версии 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/
Последний раз редактировалось Octane, 09.09.2011 в 22:46.
|
|
09.09.2011, 22:50
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Да, надо его допиливать. У меня, на не самом последнем железе, это демо лагает 2-3 раза в секунду (последний FF).
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
09.09.2011, 23:45
|
Кандидат Javascript-наук
|
|
Регистрация: 16.02.2011
Сообщений: 134
|
|
Сообщение от B~Vladi
|
Так ты же решил - вот и поделись с обществом.
|
Я использовал JQuery, и от избавления такого клюка перед вызовом новой анимации останавливать прежнею .stop() Хотя вроде и без этого работала, но была эта самая проблема. .stop() помог. А вот в чем была причина так и не понял.
Сообщение от B~Vladi
|
А вообще, всем известно, что setInterval не вызывается в неактивной вкладке.
|
Не знал)) именно используя setInterval я и делал анимацию.
|
|
10.09.2011, 00:11
|
|
Аспирант
|
|
Регистрация: 30.08.2011
Сообщений: 61
|
|
Сообщение от nyols
|
Не знал)) именно используя setInterval я и делал анимацию.
|
И jQuery делает также =)
setInterval вызывается на неактивной вкладке, но не чаще 1 раза в секунду (во современных браузерах).
Последний раз редактировалось crayday, 10.09.2011 в 00:14.
|
|
10.09.2011, 00:57
|
|
Профессор
|
|
Регистрация: 01.07.2010
Сообщений: 387
|
|
Цитата:
|
У меня, на не самом последнем железе, это демо лагает 2-3 раза в секунду (последний FF).
|
посмотри на сеттаймауте и всё поймёшь
зы зато в осле не лагает в смысле это не шутка...
я тож пробовал заюзать, но там чот с отменой косяки...
Последний раз редактировалось float, 10.09.2011 в 01:06.
|
|
10.09.2011, 01:29
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от nyols
|
А вот в чем была причина так и не понял.
|
Мораль: создавать велосипед - полезно.
Сообщение от crayday
|
setInterval вызывается на неактивной вкладке, но не чаще 1 раза в секунду (во современных браузерах).
|
Ну вот, опять всё поменяли
Сообщение от float
|
посмотри на сеттаймауте и всё поймёшь
|
И что я должен понять?
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
|
|