setInterval - рекомендуют не использовать по ряду причин, лучше setTimeout или для разных анимаций requestAnimationFrame.
И сейчас скрипт предложенный в 2011 году автором топика работает в новых версиях браузеров не верно, дело в том, что теперь нельзя обрамлять заголовок пробелами и они автоматически удаляются, поэтому пробелы съедаются скриптом и в конечном итоге тайтл бегает без пробелов вовсе.
Я предлагаю такое решение с использованием requestAnimationFrame:
Код:
var FPS = 2; //Регулирование скорости движения тайтла, рекомендую от 2 до 10 максимум.
var prevTime,curTime;
var flow_title_last = "";
var flow_title_index = 0;
function flow_title_animate(){
curTime = new Date();
if(prevTime === undefined || (curTime - prevTime) >= 1000/FPS){
var lenta = document.title;
if(flow_title_index === 0){
flow_title_last = " ";
} else if(window.index === lenta.length){
flow_title_index = 0;
}
var newTitle = lenta.substr(1, lenta.length)+flow_title_last+lenta.charAt(0);
if(lenta.charCodeAt(1) === 32){
flow_title_last = " ";
} else {
flow_title_last = "";
}
document.title = newTitle;
flow_title_index++;
prevTime = curTime;
}
window.requestAnimationFrame(flow_title_animate);
}
window.requestAnimationFrame(flow_title_animate);
И такое же решение, но с setTimeout:
Код:
var speed = 500; //Скорость движения строки
var flow_title_last = "";
var flow_title_index = 0;
function flow_title_animate(){
var lenta = document.title;
if(flow_title_index === 0){
flow_title_last = " ";
} else if(window.index === lenta.length){
flow_title_index = 0;
}
var newTitle = lenta.substr(1, lenta.length)+flow_title_last+lenta.charAt(0);
if(lenta.charCodeAt(1) === 32){
flow_title_last = " ";
} else {
flow_title_last = "";
}
document.title = newTitle;
flow_title_index++;
setTimeout(flow_title_animate, speed);
}
setTimeout(flow_title_animate, speed);
Вариант с setTimeout более доступный для большинства браузеров, в отличии от варианта с requestAnimationFrame. Поэтому, если Вам нужна поддержка старых браузеров выбирайте setTimeout вариант (второй).