JavaScript. Смена заголовка страницы

Аватара пользователя
AgentSIB
Администратор
Сообщения: 328
Зарегистрирован: 17 май 2010
Написал небольшой скриптик на скорую руку для смены хеадеровского титла.
Кривоват конечно, но работает, не выкидывать же его, может кому пригодиться.

test.html

Код: Выделить всё

<html>
<head>
<title>Первоначальный заголовок</title>
<body>
<script>
var flashTitle={
   firstTitle: document.title,
   curTitle: "",
   timeout: 500,
   flash: "*  *  *  *  *  *  *  *  *  *  *  *  ",
   do_effect: false,
   block: false,
   start: function(str){
         flashTitle.curTitle=(str!=undefined?str:flashTitle.firstTitle);
      if(!flashTitle.block){
         flashTitle.do_effect=true;
         flashTitle.step();
         flashTitle.block=true;
      }
   },
   step: function(){
      if(document.title==flashTitle.curTitle) document.title=flashTitle.flash;
      else document.title=flashTitle.curTitle;
      if(flashTitle.do_effect) setTimeout(flashTitle.step,flashTitle.timeout);
      else document.title=flashTitle.firstTitle;
   },
   stop: function(){
      flashTitle.do_effect=false;
      flashTitle.block=false;
   }
}
</script>
<a href="javascript:flashTitle.start('Новое сообщение');">Новое сообщение</a>
<a href="javascript:flashTitle.start();">Старый заголовок</a>
<a href="javascript:flashTitle.stop();">stop</a>
</body>
</html>
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"

Аватара пользователя
Distructor
Администратор
Сообщения: 1599
Зарегистрирован: 28 дек 2009
немного упростил код при том же функционале

Код: Выделить всё

<html>
<head>
    <title>Первоначальный заголовок</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>

<script type="text/javascript">
var flashTitle={
   firstTitle: document.title,
   curTitle: "",
   timeout: 500,
   flash: "*  *  *  *  *  *  *  *  *  *  *  *  ",
   timeoutId: false,
   start: function(str){
      flashTitle.curTitle = (str!=undefined ? str : flashTitle.firstTitle);
      flashTitle.stop();
      flashTitle.step();
   },
   step: function(){
      document.title = (document.title==flashTitle.curTitle) ? flashTitle.flash : flashTitle.curTitle ;
      flashTitle.timeoutId = setTimeout(flashTitle.step,flashTitle.timeout);
   },
   stop: function(){
      if (!flashTitle.timeoutId)
        return false;
      clearTimeout(flashTitle.timeoutId);
      document.title=flashTitle.firstTitle;
   }
}
</script>

  <a href="javascript:flashTitle.start('Новое сообщение');">Новое сообщение</a>
  <a href="javascript:flashTitle.start();">Старый заголовок</a>
  <a href="javascript:flashTitle.stop();">stop</a>
 
</body>
</html>

теперь
- перед каждым новым стартом не надо вызывать стоп
- при стопе заголовок меняется на первоначальный
- за счет удаления таймера избавились от переменных do_effect и block
ну и исправление пары недочетов - незакрытый head, не указанная кодировка и неуказанный тип у скрипта

Теперь надо придумать название темы в которую вынести код, т.к. тут он совсем не к месту )

Аватара пользователя
AgentSIB
Администратор
Сообщения: 328
Зарегистрирован: 17 май 2010
Distructor писал(а):- перед каждым новым стартом не надо вызывать стоп
Вообще и в моем это не требовалось) Заголовок просто менялся,а эффект продолжался)
Distructor писал(а):- при стопе заголовок меняется на первоначальный
Эм... А до этого не менялся?) update - а, ну да, точно, пропустил строчку.
Distructor писал(а):- за счет удаления таймера избавились от переменных do_effect и block
Полезно)
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"


Вернуться в «JavaScript»