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 相关文章推荐
JS如何判断移动端访问设备并解析对应CSS
Nov 27 Javascript
JavaScript中的this到底是什么(一)
Dec 09 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
Apr 05 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
Aug 05 Javascript
微信小程序 实现tabs选项卡效果实例代码
Oct 31 Javascript
mac中利用NVM管理不同node版本的方法详解
Nov 08 Javascript
基于jQuery实现无缝轮播与左右点击效果
May 13 jQuery
bootstrap 弹出框modal添加垂直方向滚轴效果
Jul 09 Javascript
对layui中表单元素的使用详解
Aug 15 Javascript
Javascript 之封装(Package)
Sep 14 Javascript
vue.js父子组件通信动态绑定的实例
Sep 28 Javascript
uniapp开发小程序的经验总结
Apr 08 Javascript
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
MOTOROLA 摩托罗拉 MODEL 66-XI五灯中波收音机
2021/03/02 无线电
PHP获取短链接跳转后的真实地址和响应头信息的方法
2014/07/25 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
ThinkPHP中create()方法自动验证表单信息
2017/04/28 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
理解Javascript_09_Function与Object
2010/10/16 Javascript
jQuery创建插件的代码分析
2011/04/14 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
JQuery自适应窗口大小导航菜单附源码下载
2015/09/01 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
详解React native fetch遇到的坑
2018/08/30 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
vue2使用keep-alive缓存多层列表页的方法
2018/09/21 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
基于DATAFRAME中元素的读取与修改方法
2018/06/08 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
python使用openpyxl操作excel的方法步骤
2020/05/28 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
使用Django的JsonResponse返回数据的实现
2021/01/15 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
经典导游欢迎词大全
2014/01/16 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
骨干教师事迹材料
2014/12/17 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
致三级跳运动员加油稿
2015/07/21 职场文书
入党后的感想
2015/08/10 职场文书
nginx如何将http访问的网站改成https访问
2021/03/31 Servers
pytorch 实现变分自动编码器的操作
2021/05/24 Python
分享python函数常见关键字
2022/04/26 Python
Python 读取千万级数据自动写入 MySQL 数据库
2022/06/28 Python
html,css,javascript是怎样变成页面的
2023/05/07 HTML / CSS