Эта проблема имеет несколько причин, все они работают вместе в идеальном шторме:
- Вы ставите в очередь новые слайды, основываясь исключительно на таймере, когда вместо этого вы должны ставить их в очередь в обратном вызове предыдущего слайдаanimation,
- Вы используете браузер, который поддерживает requestAnimationFrame, и
- Вы используете jQuery 1.6.2, который включает поддержку requestAnimationFrame.
При перемещенииот вкладки, в которой работает слайдер, браузер с поддержкой requestAnimationFrame будет останавливать все анимации, запущенные на этой вкладке.Однако таймеры продолжат работать!Когда вы возвращаетесь на страницу, все анимации в очереди запускаются немедленно, что дает вам этот эффект побега.
Чтобы исправить это, простейшим решением было бы перейти на jQuery 1.7.1, поскольку они отступили.поддержка requestAnimationFrame () из-за несовместимой поддержки браузера.Но, в конце концов, они вернут его, так что вам действительно нужно просто исправить свой код.
Чтобы исправить свой код, вы должны ставить в очередь только новую анимацию слайдов в обратном вызове изпредыдущий слайд .animate()
.Это гарантирует, что вы не будете слепо стоять в очереди, даже если анимация не запущена.
Дайте мне знать, если вам нужно больше разъяснений.tl; dr: Изменить это:
<script src="js/jquery-1.6.1.min.js" type="text/javascript"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script>
На это:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
В сообщении об ошибке jQuery содержится дополнительная информация: http://bugs.jquery.com/ticket/9381