|
 
- 帖子
- 865
- 积分
- 1260
- 威望
- 31
- 金币
- 172 个
- 体力
- 757
- 注册时间
- 2006-9-8
|

奥运快讯和金牌榜
演示图:
网站演示可看:http://xinr.cn/bbs/thread-3813-1-1.html
右下角自动弹出奥运快讯及金牌榜,每隔10秒读一次数据(自己可以根据自己的实际情况改里面的刷新时间),有奥运快讯和金牌信息自动弹出、30秒后自动收缩(如果想改为不收缩,一直保持着在窗口右下角,可以参考15楼的帖子进行更改,新闻和快讯还是会根据刷新时间自动更新)。
添加非常简单,只需改一个文件即可,卸载只要把该段代码删除即可(放在<!--LIVE NEWS START-->和<!-- LIVE NEWS END -->之间。
将以下代码加到论坛风格文件footer.htm里面(一般应该在templates/default目录下),可以加在<div id="footer">的前面,加好后在后台->工具->更新缓存,把模板缓存更新一下:- <!-- LIVE NEWS START -->
- <style>
- /* 全局CSS定义 */
- h1,h2,h3,h4,h5,h6 {margin:0; padding:0; font-size:12px; font-weight:normal;}
- </style>
- <div id="f_popup_mask" style="position:absolute;overflow:hidden;display:none;left:0px;top:0px;width:432px; height:150px;">
- <div id="f_popup_con" style="width:432px; height:150px; background:url(http://img1.cache.netease.com/dl/live/bg0717.gif) no-repeat 0 0; ">
- <div style="width:268px; float:left; margin:24px 0 0;">
- <table width="100%" border="0" cellspacing="0" cellpadding="0" height="68">
- <tr><td id="f_popup_title" style="font-size:20px; font-weight:100; font-family:'黑体'; text-align:left; padding:0 10px 0 13px; line-height:140%;">标题</td></tr>
- </table>
- <h6 style="font-size:12px; color:#FFF6BA; padding:0 10px 0 10px; text-align:right;"><a id="f_popup_infolink" href="http://2008.163.com/" target="_blank">点击查看详细>></a> <a href="http://2008.163.com/" target="_blank">进入奥运首页>></a></h6>
- </div>
- <div style="width:164px; float:right;margin:25px 0 0; height:89px;">
- <table id="f_gold_ranking" width="155" border="0" cellspacing="0" cellpadding="1" align="center" style="text-align:center;">
- <tr><td width="71" style="text-align:left;">----</td><td width="21">--</td><td width="21">--</td><td width="21">--</td></tr>
- <tr><td style="text-align:left;">----</td><td>--</td><td>--</td><td>--</td></tr>
- <tr><td style="text-align:left;">----</td><td>--</td><td>--</td><td>--</td></tr>
- <tr><td colspan="4"><a href="http://gold.2008.163.com/" target="_blank"><span style="color:#D81616;">-详细金牌榜-</span></a></td></tr>
- </table>
- </div>
- <!-- 体育 -->
- <table width="432" border="0" cellspacing="3" cellpadding="0" style="background:#DB1011; clear:both;">
- <tr>
- <td><a href="http://2008.163.com/"><img src="http://img1.cache.netease.com/cnews/2008/8/4/20080804222416f43cc.jpg" width="426" height="30" alt="" /></a></td>
- </tr>
- </table>
- </div>
- </div>
- <script type="text/javascript">
- var f_Popup_Enable=true; //是否弹出信息
- var f_Live_Data= new Object();
- f_Live_Data.dataRequestURL="http://msg.2008.163.com/live.js"; //数据地址
- f_Live_Data.refreshTime=10000;//刷新时间,单位毫秒
- f_Live_Data.lastMessageID=0;//记录最近一次弹窗ID
- f_Live_Data.COOKIE_LASTMSGID_NAME="NTES_PM_LastMsgID";//cookie名
- f_Live_Data.getCookieVal=function (offset) {
- var endstr = document.cookie.indexOf (";", offset);
- if (endstr == -1)
- endstr = document.cookie.length;
- return unescape(document.cookie.substring(offset, endstr));
- }
- f_Live_Data.GetCookie=function (name) {
- var arg = name + "=";
- var alen = arg.length;
- var clen = document.cookie.length;
- var i = 0;
- while (i < clen) {
- var j = i + alen;
- if (document.cookie.substring(i, j) == arg)
- return this.getCookieVal (j);
- i = document.cookie.indexOf(" ", i) + 1;
- if (i == 0)
- break;
- }
- return "";
- }
- f_Live_Data.SetCookie=function (cookieName,cookieValue,nDays) {
- var today = new Date();
- var expire = new Date();
- if (nDays==null || nDays==0) nDays=1;
- expire.setTime(today.getTime() + 3600000*24*nDays);
- document.cookie = cookieName+"="+escape(cookieValue) + ";path=/;domain=.163.com;expires="+expire.toGMTString();
- }
- f_Live_Data.init=function()
- {
- if(navigator.cookieEnabled){
- f_Popup.init();
- this.lastMessageID = (this.GetCookie(this.COOKIE_LASTMSGID_NAME) && this.GetCookie('NTES_PM_LReqData')) ? parseInt(this.GetCookie(this.COOKIE_LASTMSGID_NAME)) : 0;
- setInterval("f_Live_Data.DoRequest()",this.refreshTime);
- this.DoRequest();
- }
- }
- f_Live_Data.GetCookieCacheData=function()
- {
- var cdata=this.GetCookie('NTES_PM_LReqData');
- var data=new Object();
- if(cdata){
- var cdataf=cdata.split("|");
- data.lastModify=cdataf[0];
- data.title=cdataf[1];
- data.link=cdataf[2];
- data.goldList=eval(cdataf[3]);
- }
- return data;
- }
- f_Live_Data.SetCookieCacheData=function(data)
- {
- var datastr=data.lastModify+"|"+data.title+"|"+data.link+"|[";
- for(var i=0;i<data.goldList.length;i++){
- var rowdata=data.goldList;
- var listStr='{name:"'+rowdata.name+'",id:"'+rowdata.id+'",au:'+rowdata.au+',ag:'+rowdata.ag+',cu:'+rowdata.cu+',ranking:'+rowdata.ranking+'},';
- datastr+=listStr;
- }
- datastr=datastr.substring(0,datastr.length-1)+"]";
- this.SetCookie('NTES_PM_LReqData',datastr);
- }
- f_Live_Data.DoRequest=function (){
- //debug.value+="do request\n";
- var ct=this.GetCookie('NTES_PM_ReqTime') ? parseInt(this.GetCookie('NTES_PM_ReqTime')) : 0;
- var reqingTime=this.GetCookie('NTES_PM_ReqingTime') ? parseInt(this.GetCookie('NTES_PM_ReqingTime')) : 0;
- var t=new Date().getTime();
- if(t-ct>=this.refreshTime){//cookie中的cache 已经过期
- //debug.value+="cookie cache expire \n";
- if(reqingTime<=0 || t-reqingTime>this.refreshTime)
- {
- //debug.value+="没有执行中的请求,发送请求 \n";
- this.sendRequest();
- }else{
- //debug.value+="有执行中的请求,等候2秒 \n";
- setTimeout("f_Live_Data.DoRequest()",2000);//有正在执行中的请求,等候2秒再拿数据
- }
- }else{//cookie数据没有过期
- //debug.value+="cookie cache not expire \n";
- this.onData(this.GetCookieCacheData());
- }
- }
- f_Live_Data.sendRequest=function()
- {
- //debug.value+="开始请求"+this.dataRequestURL+" \n";
- var t=new Date().getTime();
- this.SetCookie('NTES_PM_ReqingTime',t);
- var obj=document.getElementById('liveDataID');
- if(obj) obj.parentNode.removeChild(obj);
- var newscript=document.createElement("script");
- newscript.type="text/javascript";
- newscript.src=this.dataRequestURL;
- newscript.id="liveDataID";
- document.getElementsByTagName("head")[0].appendChild(newscript);
- }
- function f_onLiveDataRequestComplete(data)
- {
- //debug.value+="从服务器接收到数据 \n";
- var t=new Date().getTime();
- f_Live_Data.SetCookie('NTES_PM_ReqTime',t);
- f_Live_Data.SetCookie('NTES_PM_ReqingTime',0);
- f_Live_Data.SetCookieCacheData(data);
- f_Live_Data.onData(data);
- }
- f_Live_Data.parseRanklist=function(list,len)
- {
- var rankList=new Array();
- for(var i=1;i<len;i++) rankList.push(list);
- if(list[0].ranking>len){
- rankList.push(list[0]);
- }else{
- rankList.push(list[len]);
- }
- return rankList;
- }
- f_Live_Data.onData=function(data)
- {
- ///debug.value+="数据:"+data.lastModify+" \n";
- //update ranklist
- //填充数据,防止金牌榜数据不全时出现异常。
- if(data.goldList.length<5) for(var j=0;j<3;j++) data.goldList.push({name:"-",id:"-",au:'--',ag:'--',cu:'--',ranking:''});
- try{
- f_data_updateFunc(data.goldList) //在需要更新数据的地方重新定义此函数。
- }
- catch(e){}
- f_Popup.updateRanklist(this.parseRanklist(data.goldList,3));
- // popup when newmsg coming;
- var msgid=parseInt(data.lastModify);
- if(msgid >this.lastMessageID){
- this.onNewMsgComing(data);
- this.SetCookie(this.COOKIE_LASTMSGID_NAME,msgid);
- this.lastMessageID=msgid;
- }
- }
- f_Live_Data.onNewMsgComing=function (data)
- {
- //debug.value+="新消息到达"+data.lastModify+" \n";
- //新消息到达
- //update popup message
- var domTitle=document.getElementById('f_popup_title');
- var domLink=document.getElementById('f_popup_infolink');
- domTitle.innerHTML="<a href='"+data.link+"' target='_blank'>"+data.title+"</a>";
- domLink.href=data.link;
- //弹出窗口
- if(f_Popup_Enable && data.title!='') f_Popup.showMsg();
- }
- // popup Object
- var f_Popup=new Object();
- f_Popup.msgShowTime=30000; //弹出信息停留时间
- f_Popup.init=function(){
- this.domMask=document.getElementById('f_popup_mask');
- this.domContainor=document.getElementById('f_popup_con');
- this.width=parseInt(this.domContainor.style.width);
- this.height=parseInt(this.domContainor.style.height);
- this.curHeight=0;
- if(document.all && window.attachEvent) window.attachEvent("onscroll",this.onScroll);
- else window.addEventListener("scroll",this.onScroll,false);
- }
- f_Popup.getRange=function () {
- var top = document.documentElement.scrollTop;
- var left = document.documentElement.scrollLeft;
- var height = document.documentElement.clientHeight;
- var width = document.documentElement.clientWidth;
- if (top==0 && left==0 && height==0 && width==0) {
- top = document.body.scrollTop;
- left = document.body.scrollLeft;
- height = document.body.clientHeight;
- width = document.body.clientWidth;
- }
- return {top:top ,left:left ,height:height ,width:width } ;
- }
- f_Popup.onScroll=function(e)
- {
- var rng=f_Popup.getRange();
- f_Popup.domMask.style.top=(rng.top+rng.height-f_Popup.height)+"px";
- f_Popup.domMask.style.left=(rng.left+rng.width-f_Popup.width)+"px";
- }
- f_Popup.showMsg=function(){
- var rng=this.getRange();
- this.domMask.style.left=(rng.left+rng.width-this.width)+"px";
- this.domMask.style.top=rng.top+rng.height+"px";
- this.domMask.style.height="0px";
- this.curHeight=0;
- this.domMask.style.display="block";
- setTimeout("f_Popup.showTween()",20);
- }
- f_Popup.hideMsg=function(){
- this.domMask.style.display="none";
- }
- f_Popup.showTween=function(){
- var rng=this.getRange();
- this.curHeight+=(this.height-this.curHeight)/5;
- if(Math.abs(this.height-this.curHeight)<1) {
- this.domMask.style.height=this.height+"px";
- this.domMask.style.top=rng.top+rng.height-this.height+"px";
- setTimeout("f_Popup.hideMsg()",this.msgShowTime);
- return;
- }
- this.domMask.style.height=parseInt(this.curHeight)+"px";
- this.domMask.style.top=rng.top+rng.height-parseInt(this.curHeight)+"px";
- setTimeout("f_Popup.showTween()",20);
- }
- f_Popup.updateRanklist=function(rankList)
- {
- var domRankingTable=document.getElementById("f_gold_ranking");
- var domTrs=domRankingTable.getElementsByTagName('tr');
- for(var i=0;i<rankList.length;i++)
- {
- var rowdata=rankList;
- var tr=domTrs;
- var rowColor=rowdata.name=="中国" ? '#FF0000' : '#000000';
- tr.style.color=rowColor;
- var tds=tr.getElementsByTagName('td');
- tds[0].innerHTML="<a href='http://data.2008.163.com/rank/d,n,1,"+rowdata.id+".html' target='_blank'><span style='color:"+rowColor+"' >"+rowdata.ranking+" "+ rowdata.name+"</span></a>";
- tds[1].innerHTML=rowdata.au;
- tds[2].innerHTML=rowdata.ag;
- tds[3].innerHTML=rowdata.cu;
- }
- }
- //var debug;
- //if(document.getElementById('debug')) debug=document.getElementById('debug')
- // else debug=new Object();
- f_Live_Data.init();
- </script>
- <!-- LIVE NEWS END -->
复制代码 [ 本帖最后由 风幻蓝 于 2008-8-12 10:42 编辑 ] |
|