Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.08.2011, 22:46
Аспирант
Отправить личное сообщение для myocean Посмотреть профиль Найти все сообщения от myocean
 
Регистрация: 25.07.2011
Сообщений: 47

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

Как правильно реализовать цикличность вызова функции, события и т.п
с помощью скажем setInterval, setTimeOut, everyTime (Jquery.timers.js) и т.д.?

Вроде все просто, пишем код, к примеру:

<script type="text/javascript">
function b_move(){
var visB = $(".b_sup:visible");
var nextB = visB.next();
$(".b_sup").fadeOut(1000); 
if(visB.length==0||nextB.length==0) 
$(".b_sup:first").delay(1000).fadeIn(500);
else nextB.delay(1000).fadeIn(500);      
}
$(document).everyTime(7500,'tmr_b',  b_move);
</script>


<span class="b_sup" ><img src="blalbalba" /></span>
<span class="b_sup" style="display:none"><img src="blalbalba" /></span>
<span class="b_sup" style="display:none"><img src="blalbalba" /></span>
<span class="b_sup" style="display:none"><img src="blalbalba" /></span>
<span class="b_sup" style="display:none"><img src="blalbalba" /></span>


Идея, поочередная смена картинок...
В IE, к примеру, все работает.... но откроем страницу в браузере Chrome,
и при условии ухода на некоторое время на другую вкладку и возвращению обратно, сможем видеть быструю смену картинок (как будто скрипт отрабатывает те итерации что мы пропустили за время нашего отсутствия) затем все возвращается на круги своя...

Последний раз редактировалось myocean, 06.08.2011 в 23:12.
Ответить с цитированием
  #2 (permalink)  
Старый 07.08.2011, 00:56
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Тесты(запустите и погуляйте по вкладкам):
<html>
<body>
<script>
time=0;
(function check(){
   document.body.appendChild(document.createTextNode(-time+(time=new Date().getTime())+' | '));
setTimeout(check,200)
})()
</script>
</body>
</html>


<html>
<body>
<script>
time=0;
setInterval(function(){
   document.body.appendChild(document.createTextNode(-time+(time=new Date().getTime())+' | '));
},200)
</script>
</body>
</html>
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 07.08.2011, 02:14
Аспирант
Отправить личное сообщение для myocean Посмотреть профиль Найти все сообщения от myocean
 
Регистрация: 25.07.2011
Сообщений: 47

<html>
<body>
<script>
function b_move(){
var visB = $(".sup:visible");
var nextB = visB.next();
$(".sup:visible").fadeOut(1000); 
if(visB.length==0||nextB.length==0) 
$(".sup:first").delay(1000).fadeIn(500);
else nextB.delay(1000).fadeIn(500); 
setTimeout(b_move,5000);
}
b_move();
</script>

<div id="modul" style="height:100px;">
<span class="sup" style="display:none"> 1 </span>
<span class="sup" style="display:none"> 2 </span>
<span class="sup" style="display:none"> 3 </span>
<span class="sup" style="display:none"> 4 </span>
<span class="sup" > 5 </span>
<span class="sup" style="display:none"> 6 </span>
</div>

</body>
</html>


Спасибо за ответ!
Вот, по аналогии с вашим кодом (первый вариант)... глюки, к сожалению, в наличии...
Может дело в другом... таймер таймером, а вот fadeIn, fadeout отрабатываю неккоректно... за один цикл должны отработать один раз... а при уходе с вкладки и последующем возвращении отрабатываю по количеству пропущенных циклов ;(

Последний раз редактировалось myocean, 07.08.2011 в 02:58.
Ответить с цитированием
  #4 (permalink)  
Старый 07.08.2011, 02:20
Аспирант
Отправить личное сообщение для myocean Посмотреть профиль Найти все сообщения от myocean
 
Регистрация: 25.07.2011
Сообщений: 47

202 | 202 | 201 | 201 | 1001 | 1000 | 1000 | 841 | 201 | 202 | 201 | 202 | 201 | 202 | 201 | 202 | 201 | 201 | 201 | 201 | 201 | 202 | 201 | 201 | 202 | 295 | 213 | 201 | 1001 | 1000 | 1001 | 1001 | 200 | 201 | 201 | 201 | 201 | 202 | 201 | 201 | 202 | 201 | 202 | 201 | 201 | 202 | 201 | 201 | 1002 | 1001 | 1001 | 372 | 202 | 201 | 200 | 202 | 202 | 202 | 202 | 202 |

Кстати, что выдает Хром (выделено жирным) когда вкладка закрыта...

Последний раз редактировалось myocean, 07.08.2011 в 02:58.
Ответить с цитированием
  #5 (permalink)  
Старый 09.08.2011, 12:12
Аспирант
Отправить личное сообщение для myocean Посмотреть профиль Найти все сообщения от myocean
 
Регистрация: 25.07.2011
Сообщений: 47

ап
Ответить с цитированием
  #6 (permalink)  
Старый 09.08.2011, 12:20
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

юзай .animate() и все проблемы уйдут
Ответить с цитированием
  #7 (permalink)  
Старый 09.08.2011, 19:59
Аспирант
Отправить личное сообщение для myocean Посмотреть профиль Найти все сообщения от myocean
 
Регистрация: 25.07.2011
Сообщений: 47

тогда появиться другая проблема...

$(".class").animate({blablabla},5000);


Как зациклить, при условии что количество объектов .class > 1?

Последний раз редактировалось myocean, 09.08.2011 в 20:08.
Ответить с цитированием
  #8 (permalink)  
Старый 11.08.2011, 12:19
Аспирант
Отправить личное сообщение для myocean Посмотреть профиль Найти все сообщения от myocean
 
Регистрация: 25.07.2011
Сообщений: 47

тема еще актуальна!
Ответить с цитированием
  #9 (permalink)  
Старый 11.08.2011, 12:50
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

$(".class").each( function(index, el) { $(el).animate({blablabla} },5000);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кроссбраузерная отправка файла space AJAX и COMET 14 13.11.2010 02:15
Кроссбраузерная обработка нажатий клавиш micscr Общие вопросы Javascript 12 22.12.2009 19:16
Цикличность анимация? SashaBorandi jQuery 1 25.12.2008 09:20