JS实现消息来时让网页标题闪动效果的方法


Posted in Javascript onApril 20, 2016

本文实例讲述了JS实现消息来时让网页标题闪动效果的方法。分享给大家供大家参考,具体如下:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script>
var g_blinkid = 0;
var g_blinkswitch = 0;
var g_blinktitle = document.title;
var g_onlineuser = "";
var g_sysmsg_sound = null;
var g_newmsg_sound = null;
var g_app_num = 0;
var g_appnum = 0;
var g_bappmore = false;
var g_inputtime = 0;
function blinkNewMsg()
{
 document.title = g_blinkswitch % 2==0 ? "【 】 - " + g_blinktitle : "【新消息】 - " + g_blinktitle;
 g_blinkswitch++;
}
 g_blinkid = setInterval(blinkNewMsg, 1000);
function stopBlinkNewMsg()
{
  if (g_blinkid)
  {
    clearInterval(g_blinkid);
    g_blinkid = 0;
    document.title = g_blinktitle;
  }
}
</script>
</head>
<body>
  <form id="form1" runat="server">
  <div>
    <input id="Button1" type="button" value="button" onclick="stopBlinkNewMsg();" />
  </div>
  </form>
</body>
</html>

参考开心网的head-26.js

var g_blinkid = 0;
var g_blinkswitch = 0;
var g_blinktitle = document.title;
var g_onlineuser = "";
var g_sysmsg_sound = null;
var g_newmsg_sound = null;
var g_app_num = 0;
var g_appnum = 0;
var g_bappmore = false;
var g_inputtime = 0;
function blinkNewMsg()
{
  var now  = new Date();
  var nowtime = now.getTime();
  if(nowtime - g_inputtime > 5000)
  {
    document.title = g_blinkswitch % 2 ? "【 】 - " + g_blinktitle : "【新消息】 - " + g_blinktitle;
  }
  g_blinkswitch++;
}
function blinkOnline()
{
  document.title = g_blinkswitch % 2 ? "○" + g_onlineuser + " 上线了 - " + g_blinktitle : "●" + g_onlineuser + " 上线了 - " + g_blinktitle;
  g_blinkswitch++;
  if (g_blinkswitch > 10)
  {
    stopBlinkNewMsg();
  }
}
function checkNewMsg()
{
  var url = "/home/newmsg.php";
  var pars = "";
  var myAjax = new Ajax.Request(url, {method: "post", parameters: pars, onComplete: function (req) { checkNewMsgShow(req); } });
}
function stopBlinkNewMsg()
{
  if (g_blinkid)
  {
    clearInterval(g_blinkid);
    g_blinkid = 0;
    $("head_msgdiv").style.display = "none";
    document.title = g_blinktitle;
  }
}
var g_oldmsg = g_oldsysmsg = g_oldbbs = g_oldbbsreply = g_oldcomment = g_oldreply = 0;
function checkNewMsgShow(req)
{
  var r = req.responseText;
  stopBlinkNewMsg();
  setTimeout(checkNewMsg, 60000);
  eval ("r="+r);
  var a_msglist = new Array("msg", "sysmsg", "bbs", "bbsreply", "comment", "reply");
  if(r.notice == "1")
  {
    var forbidsound = parseInt(r.forbidsound);
    if (!forbidsound)
    {
      for (i=0; i<a_msglist.length; i++)
      {
        if ($("body_" + a_msglist[i] + "_num"))
        {
          var c = parseInt($("body_" + a_msglist[i] + "_num").innerHTML);
          eval("g_old" + a_msglist[i] + "=c;");
        }
      }
      var newmsg = parseInt(r.msg) + parseInt(r.bbs) + parseInt(r.bbsreply) + parseInt(r.comment) + parseInt(r.reply);
      var sysmsg = parseInt(r.sysmsg);
      var newchange = (parseInt(r.msg) - g_oldmsg)
        || (parseInt(r.bbs) - g_oldbbs)
        || (parseInt(r.bbsreply) - g_oldbbsreply)
        || (parseInt(r.comment) - g_oldcomment)
        || (parseInt(r.reply) - g_oldreply);
      var syschange = (parseInt(r.sysmsg) - g_oldsysmsg);
      for (i=0; i<a_msglist.length; i++)
      {
        eval("g_old" + a_msglist[i] + "=parseInt(r." + a_msglist[i] + ");");
      }
      if (newmsg && newchange)
      {
        if (g_newmsg_sound == null)
        {
          g_newmsg_sound = new SWFObject("http://img.kaixin001.com.cn/i2/newmsg_sound.1.0.swf", "newmsg_sound_swf", "1", "1", "8", "#ffffff", true);
          g_newmsg_sound.addParam("allowscriptaccess", "always");
          g_newmsg_sound.addParam("wmode", "opaque");
          g_newmsg_sound.addParam("menu", "false");
          g_newmsg_sound.addVariable("autoplay","0");
        }
        g_newmsg_sound.write("head_msgsound_div");
      }
      else if (sysmsg && syschange)
      {
        if (g_sysmsg_sound == null)
        {
          g_sysmsg_sound = new SWFObject("http://img.kaixin001.com.cn/i2/sysmsg_sound.1.0.swf", "sysmsg_sound_swf", "1", "1", "8", "#ffffff", true);
          g_sysmsg_sound.addParam("allowscriptaccess", "always");
          g_sysmsg_sound.addParam("wmode", "opaque");
          g_sysmsg_sound.addParam("menu", "false");
          g_sysmsg_sound.addVariable("autoplay","0");
        }
        g_sysmsg_sound.write("head_msgsound_div");
      }
    }
    $("head_msgdiv").style.display = "block";
    g_blinkid = setInterval(blinkNewMsg, 1000);
  }
  else if (0 && r.online.length)
  {
    g_blinkswitch = 0;
    g_onlineuser = r.online;
    g_blinkid = setInterval(blinkOnline, 500);
  }
  for (i=0; i<a_msglist.length; i++)
  {
    if (!parseInt(r[a_msglist[i]]))
    {
      $("head_" + a_msglist[i] + "_num").innerHTML = "";
      if ($("body_" + a_msglist[i] + "_num"))
      {
        $("body_" + a_msglist[i] + "_num").className = "ql2";
        $("body_" + a_msglist[i] + "_num").innerHTML = "0条新";
      }
    }
    else
    {
      $("head_" + a_msglist[i] + "_num").innerHTML = "(" + r[a_msglist[i]] + ")";
      if ($("body_" + a_msglist[i] + "_num"))
      {
        $("body_" + a_msglist[i] + "_num").className = "cr";
        $("body_" + a_msglist[i] + "_num").innerHTML = r[a_msglist[i]] + "条新";
      }
      if (a_msglist[i] == "msg")
      {
        if ('function' == typeof(msg_view_checkNewMsg))
        {
          msg_view_checkNewMsg();
        };
      }
    }
  }
}
function outputHead()
{
  var v_html = 
'<div id="head">'
+'  <div class="hd">'
+'    <div class="h1 wl1" style="margin-top:3px;">'
+'      <div style="padding-left:18px;"><a href="/" class="cf" title="开心网"><img src="http://img.kaixin001.com.cn/i2/kaixinlogo.gif" alt="开心网" width="106" height="36" /></a></div>'
+'    </div>'
+'    <div class="h2">'
+'      <div id="hn1" class="hn_of">'
+'        <div class="hn_tt"><a href="/home/?t=' + Math.ceil(Math.random() * 100) + '" class="n">首页</a></div>'
+'        <div class="hn_sj"><a href="javascript:xs(1);" class="sj"><img src="http://img.kaixin001.com.cn/i/r_sj.gif" width="15" height="20" /></a></div>'
+'        <div class="c"></div>'
+'        <div id="hn1_l" class="hn_l">'
+'          <div><a href="/home/" class="hnm">我的首页</a></div>'
+'          <div class="l1_h"> </div>'
+'          <div class="c9 m0_15">我的首页预览:</div>'
+'          <div>'
+'            <a href="/home/?_preview=friend" class="hnm" target=_blank onclick="javascript:hy();">'
+'            <div class="l" style="margin:5px 3px;"><img src="http://img.kaixin001.com.cn/i/small-tri.gif" width="3" height="5" /></div>'
+'            <div class="l" style="cursor:pointer;">好友访问时</div>'
+'            <div class="c"></div>'
+'            </a>'
+'          </div>'
+'          <div class="mb10">'
+'            <a href="/home/?_preview=other" class="hnm" target=_blank onclick="javascript:hy();" >'
+'            <div class="l" style="margin:5px 3px;"><img src="http://img.kaixin001.com.cn/i/small-tri.gif" width="3" height="5" /></div>'
+'            <div class="l" style="cursor:pointer;">陌生人访问时</div>'
+'            <div class="c"></div>'
+'            </a>'
+'          </div>'
+'        </div>'
+'      </div>'
+'      <div id="hn_xx1" class="hn_xx"><img src="http://img.kaixin001.com.cn/i/r_xx13.gif" width="1" height="13" /></div>'
+'      '
+'      <div id="hn2" class="hn_of">'
+'        <div class="hn_tt"><a href="/friend/?t=' + Math.ceil(Math.random() * 100) + '" class="n">好友</a></div>'
+'        <div class="hn_sj"><a href="javascript:xs(2);" class="sj"><img src="http://img.kaixin001.com.cn/i/r_sj.gif" width="15" height="20" /></a></div>'
+'        <div class="c"></div>'
+'        <!--'
+'        <iframe style="position:absolute;z-index:1;width:expression(this.nextSibling.offsetWidth);height:expression(this.nextSibling.offsetHeight);top:expression(this.nextSibling.offsetTop);left:expression(this.nextSibling.offsetLeft);" frameborder="0" ></iframe>'
+'        -->'
+'        <div id="hn2_l" class="hn_l" style="z-index:2">'
+'          <div><a href="/friend/" class="hnm">我的全部好友</a></div>'
+'          <div><a href="/friend/?viewtype=online" class="hnm">当前在线好友</a></div>'
+'          <div><a href="/friend/group.php" class="hnm">好友管理</a></div>'
+'          <div><a href="/home/fstatus.php" class="hnm">好友状态更新</a></div>'
+'          <div class="l1_h"> </div>'
+'          <div><a href="/friend/invite.php" class="hnm">邀请朋友加入</a></div>'
+'          <div><a href="/friend/search.php" class="hnm">查找朋友</a></div>'
+'        </div>'
+'      </div>'
+'      <div id="hn_xx2" class="hn_xx"><img src="http://img.kaixin001.com.cn/i/r_xx13.gif" width="1" height="13" /></div>'
+'    '
+'      <div id="hn3" class="hn_of">'
+'        <div class="hn_tt"><a href="/group/?t=' + Math.ceil(Math.random() * 100) + '" class="n">群</a></div>'
+'        <div class="hn_sj"><a href="javascript:xs(3);" class="sj"><img src="http://img.kaixin001.com.cn/i/r_sj.gif" width="15" height="20" /></a></div>'
+'        <div class="c"></div>'
+'        <div id="hn3_l" class="hn_l">'
+'          <div><a href="/group/" class="hnm">我的群</a></div>'
+'          <div><a href="/group/flist.php" class="hnm">好友的群</a></div>'
+'          <div class="l1_h"> </div>'
+'          <div><a href="/group/new.php" class="hnm">创建新群</a></div>'
+'          <div><a href="/group/search.php" class="hnm">全部群</a></div>'
+'        </div>'
+'      </div>'
+'      <div id="hn_xx3" class="hn_xx"><img src="http://img.kaixin001.com.cn/i/r_xx13.gif" width="1" height="13" /></div>'
+'    '
+'      <div id="hn4" class="hn_of" style="padding-right:28px;">'
+'        <div class="hn_tt"><a href="/msg/?t=' + Math.ceil(Math.random() * 100) + '" class="n">消息</a></div>'
+'        <div class="hn_sj"><a href="javascript:xs(4);" class="sj"><img src="http://img.kaixin001.com.cn/i/r_sj.gif" width="15" height="20" /></a><span style="position:absolute;top:5px; left:65px;display:none;" id=head_msgdiv><a href="/msg/" class="n" style="margin-top:-5px;"><img src="http://img.kaixin001.com.cn/i/ddtx.gif" onmouseover="javascript:xs(4);" border=0></a></span></div>'
+'        <div class="c"></div>'
+'        <div id="hn4_l" class="hn_l">'
+'          <div><a href="/msg/inbox.php?t=' + Math.ceil(Math.random() * 100) + '" class="hnm">短消息<span style="padding-left:2px;color:red;" id=head_msg_num></span></a></div>'
+'          <div><a href="/msg/sys.php?t=' + Math.ceil(Math.random() * 100) + '" class="hnm"">系统消息<span style="padding-left:2px;color:red;" id=head_sysmsg_num></span></a></div>'
+'          <div class="l1_h"> </div>'
+'          <div><a href="/comment/?t=' + Math.ceil(Math.random() * 100) + '" class="hnm">评论<span style="padding-left:2px;color:red;" id=head_comment_num></span></a></div>'
+'          <div><a href="/comment/send.php?t=' + Math.ceil(Math.random() * 100) + '" class="hnm">评论回复<span style="padding-left:2px;color:red;" id=head_reply_num></span></a></div>'
+'          <div><a href="/comment/uindex.php?t=' + Math.ceil(Math.random() * 100) + '" class="hnm">留言板<span style="padding-left:2px;color:red;" id=head_bbs_num></span></a></div>'
+'          <div><a href="/comment/usend.php?t=' + Math.ceil(Math.random() * 100) + '" class="hnm">留言回复<span style="padding-left:2px;color:red;" id=head_bbsreply_num></span></a></div>'
+'        </div>'
+'      </div>'
+'      <div id="hn_xx4" class="hn_xx"></div>'
+'      '
+'      <div class="c"></div>'
+'    </div>'
+'    <div class="h3"><a href="/friend/invite.php" class="ce">邀请</a> ┊ <a href="/friend/search.php" class="ce">找人</a> ┊ <a href="/set/account.php" class="ce">账户</a> ┊ <a href="/set/privacy.php" class="ce">隐私</a> ┊ <a href="/login/logout.php" class="ce">退出</a></div>'
+'    <div class="c"></div>'
+'  </div>'
+'</div>'
+'<div id="head_msgsound_div" style="left:0;top:0;position:absolute;"></div>'
+'<div id="main">'
+'  <div class="m1 wl1">'
+'    <div class="m1t"></div>'
+'    <div id="app_friend_tip" style="z-index:20000;position:absolute;background:#fff;border:2px solid #F7F7F7;width:160px;height:250px;display:none;">'
+'    </div>';
  document.writeln(v_html);
}
function _outputApp(v_icon, v_link, v_title, v_aid, v_index_num)
{
  if (-1 == v_link.indexOf("?"))
  {
    v_link += "?t=" + Math.ceil(Math.random() * 100);
  }
  else
  {
    v_link += "&t=" + Math.ceil(Math.random() * 100);
  }
  v_html = 
'<div style="margin:12px 15px 12px 15px;" onmouseover="javascript:if(\'' + v_index_num + '\'==\'1\'){$(\'app_friend_' + v_aid + '\').style.display=\'block\';}" onmouseout="javascript:$(\'app_friend_' + v_aid + '\').style.display=\'none\';">'
+'  <div class="l"><img src="' + v_icon + '" width="28" height="24" align="absmiddle" /> <a href="' + v_link + '" class="sl" title="' + v_title + '" ><b class="f14">' + v_title + '</b></a></div>'
+'  <div class="l" id="app_friend_' + v_aid + '" style="display:none;padding:8px 3px;cursor:pointer;" onclick="javascript:a_appfriend_show(' + v_aid + ' , \'' + v_link + '\' , \'' + v_title + '\');"><img src="http://img.kaixin001.com.cn/i2/xiasanjiao.gif" width="7" height="4" alt="快速查看你所有好友的' + v_title + '内容" align="absmiddle" /></div>'
+'  <div class="c"></div>'
+'</div>';
  return v_html;
}
function outputApp(v_icon, v_link, v_title, v_aid, v_index_num)
{
  document.writeln(_outputApp(v_icon, v_link, v_title, v_aid, v_index_num));
}
function _setApplistHiddenHead()
{
  if (g_app_num==-1) return '';
  g_appnum++;
  if (g_appnum>g_app_num && !g_bappmore)
  {
    g_bappmore = true;
    return '<span id=applistmore style="display:none">';
  }
  return '';
}
function setApplistHiddenHead()
{
  document.writeln(_setApplistHiddenHead());
}
function _setApplistHiddenTail()
{
  if (g_app_num==-1) return '';
  if (g_bappmore)
  {
    return '</span><div id=applistscroll class="tar" style="margin-top:-10px;"><img src="http://img.kaixin001.com.cn/i2/xiala.gif" width="5" align="absmiddle"> <a href="javascript:showAppmore();" class="sl-gray" style="text-decoration:none;" title="列出我的全部组件">展开</a>  </div>';
  }
  return '';
}
function setApplistHiddenTail()
{
  document.writeln(_setApplistHiddenTail());
}
function outputHead2()
{
  document.write('<div class="tac mb5"><img src="http://img.kaixin001.com.cn/i/index_app.gif" width="120" height="2" /></div> <div style="position:relative;"> <div class="install_tips" id="install_tips" style="position:absolute; left:110px; top:-7px; z-index:99; display:none;"> <div class="tar" style="padding:7px 15px 0 0;"><img src="http://img.kaixin001.com.cn/i2/black_del.gif" title="关闭" style="cursor:pointer;" onclick="h(\'install_tips\')" /></div> <p style="padding:0px 20px;">点击这里,添加各种实用或游戏组件</p></div> <div class="p5 m0_10 tac"><img src="http://img.kaixin001.com.cn/i/index_app_add1.gif" width="9" height="9" title="添加组件" /> <a href="/app/list.php" class="sl2">添加组件</a></div> </div> <div class="p5 m0_10 tac" style="margin-top:-8px;"><img src="http://img.kaixin001.com.cn/i/index_app_set1.gif" width="9" height="9" title="组件设置" /> <a href="/set/appman.php" class="sl2">组件设置</a></div></div>');
}
function showAppmore()
{
  if ($("applistmore").style.display=="none") 
  {
    $("applistmore").style.display="block";
    $("applistscroll").innerHTML = '<img src="http://img.kaixin001.com.cn/i2/shouqi.gif" width="5" align="absmiddle"> <a href="javascript:showAppmore();" class="sl-gray" style="text-decoration:none;">收起</a>  ';
  }
  else
  {
    $("applistmore").style.display="none";
    $("applistscroll").innerHTML = '<img src="http://img.kaixin001.com.cn/i2/xiala.gif" width="5" align="absmiddle"> <a href="javascript:showAppmore();" class="sl-gray" style="text-decoration:none;">展开</a>  ';
  }
}
function outputAppInfo()
{
  if (g_allapp_num > g_prevapp_num)
  {
    var url = "/app/left.php";
    var pars = "";
    var myAjax = new Ajax.Request(url, {method: "post", parameters: pars, onComplete: function (req) { outputAppInfoAjaxShow(req); } });
  }
}
function outputAppInfoAjaxShow(req)
{
  eval("data="+req.responseText);
  var v_html = '';
  for (var i=0; i<data.length; i++)
  {
    v_html += _setApplistHiddenHead();
    v_html += _outputApp(data[i]["icon"], data[i]["link"], data[i]["title"], data[i]["aid"], data[i]["index_num"]);
  }
  v_html += _setApplistHiddenTail();
  $("head_applist").innerHTML =v_html;
}
function outputTail()
{
  document.writeln('<div class="c"></div>'
+'</div>'
+'<div id="b">'
+'  <div class="b1"><a href="/s/about.html" class="c6" target="_blank">关于我们</a><span>┊</span><a href="/s/contact.html" class="c6" target="_blank">联系方式</a><span>┊</span><a href="/t/feedback.html" class="c6" target="_blank">意见反馈</a><span>┊</span><a href="/s/help.html" class="c6" target="_blank">帮助中心</a>  © 2009 kaixin001.com  <a class=c6 href=http://www.miibeian.gov.cn target=_blank>京ICP证080482号</a> </div>'
+'</div>');
}

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jQuery 性能优化指南(2)
May 21 Javascript
关于使用 jBox 对话框的提交不能弹出问题解决方法
Nov 07 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
Dec 15 Javascript
jQuery实现类似淘宝网图片放大效果的方法
Jul 08 Javascript
Jquery实现$.fn.extend和$.extend函数
Apr 14 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
Apr 29 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
May 15 jQuery
详解webpack异步加载业务模块
Jun 23 Javascript
React学习之事件绑定的几种方法对比
Sep 24 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
May 01 Javascript
Preload基础使用方法详解
Feb 03 Javascript
jquery检测上传文件大小示例
Apr 26 jQuery
javascript实现仿百度图片的瀑布流加载效果
Apr 20 #Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
Apr 19 #Javascript
javascript实现简单计算器效果【推荐】
Apr 19 #Javascript
Jquery实现的简单轮播效果【附实例】
Apr 19 #Javascript
jQuery实现选项联动轮播效果【附实例】
Apr 19 #Javascript
浅析JavaScript中浏览器的兼容问题
Apr 19 #Javascript
javascript+HTML5 Canvas绘制转盘抽奖
May 16 #Javascript
You might like
把PHP安装为Apache DSO
2006/10/09 PHP
PHP版网站缓存加快打开速度的方法分享
2012/06/03 PHP
php批量删除数据库下指定前缀的表以prefix_为例
2014/08/24 PHP
Yii2增删改查之查询 where参数详细介绍
2016/08/08 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
2010/08/30 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
javascript函数特点实例分析
2015/05/14 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
微信小程序webSocket的使用方法
2020/02/20 Javascript
关于AngularJS中几种Providers的区别总结
2020/05/17 Javascript
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
Python过滤txt文件内重复内容的方法
2018/10/21 Python
使用python实现语音文件的特征提取方法
2019/01/09 Python
python机器人运动范围问题的解答
2019/04/29 Python
Python 如何提高元组的可读性
2019/08/26 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
英国床垫和床架购物网站:Bedman
2019/11/04 全球购物
教师节感谢信
2015/01/22 职场文书
党内外群众意见范文
2015/06/02 职场文书
宾馆客房管理制度
2015/08/06 职场文书
公司岗位说明书
2015/10/08 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android
Python实现打乒乓小游戏
2021/09/25 Python