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

AgentSIB
Написал небольшой скриптик на скорую руку для смены хеадеровского титла.
Кривоват конечно, но работает, не выкидывать же его, может кому пригодиться.

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>
Вернуться к началу

Distructor
Администратор
немного упростил код при том же функционале

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

<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
Distructor писал(а): - перед каждым новым стартом не надо вызывать стоп
Вообще и в моем это не требовалось) Заголовок просто менялся,а эффект продолжался)
Distructor писал(а): - при стопе заголовок меняется на первоначальный
Эм... А до этого не менялся?) update - а, ну да, точно, пропустил строчку.
Distructor писал(а): - за счет удаления таймера избавились от переменных do_effect и block
Полезно)
Вернуться к началу