游客:
注册
|
登录
|
会员
|
搜索
|
统计
|
帮助
无忧脚本
»
JavaScript & VBScript & DHTML 脚本技术讨论版
» 封装的一个播放器
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题:
[原创]
封装的一个播放器
linfeng
小恐龙
UID 32227
精华 0
积分 347
帖子 73
威望 63
阅读权限 30
注册 2005-7-4
状态 离线
#1
大
中
小
使用道具
发表于 2006-12-20 18:47
资料
个人空间
短消息
加为好友
封装的一个播放器
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>播放器</title> </head> <script language="javascript"> //linfeng@gx165.com function classMedia(_mediaid,_showTextid,_objname) { //外部属性========================================================================= this.CYL=true;//连续播放标志 this.RDM=false;//无序播放(true为无序播放) this.MASMODE=true;//主模式,当用弹出式窗口控制时是从模式 this.MSG=""; //消息 //-----初始化设置--------------------------------------------------------------------- var TimeOUT=20; var M_Stop=false; var mediaObj=document.getElementById(_mediaid); var showObj=document.getElementById(_showTextid); var SoundID=0; var nextID=1; var MusicLength=0; var Music=new Array(); var ACT; var sTime=TimeOUT; var WinOPEN; var revFlag=false; function duiLei() { var lgh=50 ;//队列长 var sID=new Array(); var num=0; var topn; var lenght=0; this.isTop=true; for(var i=0;i<lgh;i++) { sID[i]=0; } this.input=function(x) { num++; lenght++; if(num>lgh-1)num=0; sID[num]=x; topn=num; } this.output=function() { if(lenght>0) { lenght--; num--; } this.isTop=false; if(num<0)num=lgh-1; return sID[num]; } this.popID=function() { num++; lenght++; if(num>lgh-1)num=0; if(num==topn)this.isTop=true; return sID[num]; } this.GetIsButtom=function() { return lenght==0; } } var His=new duiLei(); this.AddList=function(u,n,f)//add Music { var tmp=(f==undefined)?"no":f; Music[Music.length]={url:u,name:n,file:tmp,id:MusicLength}; MusicLength=Music.length; } function PlayID(c_id) { mediaObj.controls.stop(); mediaObj.URL=Music[c_id].url; mediaObj.controls.play(); } function GetNextID(leg,RandomFlag,isMas) { var temp; if(His.isTop) { if(isMas) { if(RandomFlag) { temp=Math.round(Math.random()*(leg-1)) } else { temp=(SoundID+1)%leg; } }//-------- else { temp=GetMenuPlayNext(leg) } His.input(temp); return temp; } else { return His.popID(); } } function GetMenuPlayNext(length) { if(WinOPEN!=null && WinOPEN.open) { return WinOPEN.GetNextSoundID(); } else { return (SoundID+1)%length; } } function testTimeOut(s) { if(s) { TimeOUT--; if(TimeOUT==0) { TimeOUT=sTime; return true; } else { return false; } } else { TimeOUT=sTime; return false; } } function MsgRefresh()//更新消息 { var staText; staText="当前\""+Music[SoundID].name+SoundID+"\"下一首\""+Music[nextID].name+nextID+"\""; staText="<font color=yellow size='2'>当前:</font><font color=#00ffff size='2'>" +mediaObj.status +"</font><font color=#ff0000 size='2'>--" +Music[SoundID].name+"--</font> <a href='#huangXiangBin' onclick='"+_objname+".NEXT()'><font color=#00ff00 size='2'>下一首--</font></a><font color=#ff00ff size='2'>" +Music[nextID].name+"</font> "; //showObj.innerHTML=staText; ////////////////////////////////////////////////////////////////////// showObj.innerHTML=staText; /////////////////////////////////////////////////////////////////////// return staText; } this.RUN=function() { if(MusicLength==0)return; if(!M_Stop && this.CYL) { if(mediaObj.playState==6 && testTimeOut(1)) { this.NEXT(); } if(mediaObj.playState==10||mediaObj.playState==1) { testTimeOut(0); this.NEXT(); } } this.MSG=MsgRefresh(); } ACT=window.setInterval(_objname+".RUN();",3000); /////////////////////////////////////////////////////////////////////////////以下为程序接口 //////////////////////////////////----------播放控制------------------------- this.PLAY=function(s_id)//播放,如果无参数,即播放当前ID,有参数时,播放参数指定的ID { if(mediaObj.URL=="")mediaObj.URL=Music[0].url; if(arguments.length>0) { SoundID=s_id; PlayID(SoundID); } else { mediaObj.controls.play(); } this.MSG=MsgRefresh(); M_Stop=false; this.MASMODE=true; revFlag=false; } this.PAUSE=function()//暂停 { mediaObj.controls.pause(); this.MSG=MsgRefresh(); } this.REV= function(t)//播放上一首 { var idx=1; if(arguments.length>0)idx=t; if(!revFlag)idx++; for(;idx>0;idx--) { if(His.GetIsButtom())return;//没有前一首了 nextID=SoundID; //当带有参数时,将播放向下播放第N首 SoundID=His.output(); } PlayID(SoundID); this.MSG=MsgRefresh(); M_Stop=false;//停止标记 revFlag=true; } this.NEXT=function(t)//播放下一首,当带有参数时, { //将播放向下播放第N首,但只能是历史播放才有些功能 idx=1; if(arguments.length>0)idx=t; if(revFlag)idx++; for(;idx>0;idx--) { SoundID=nextID; nextID=GetNextID(MusicLength,this.RDM,this.MASMODE); if(His.isTop)break; } PlayID(SoundID); this.MSG=MsgRefresh(); M_Stop=false; revFlag=false; } this.STOP=function()//停止播放 { M_Stop=true; mediaObj.controls.stop(); } this.SETVOLUME=function(vol)//设置音量 { if(vol>100)vol=100; if(vol<0)vol=0; mediaObj.settings.volume=parseInt(vol); } //----------播放设置------------------------- this.SETRDM=function()//设置无序或是有序播放,调用一次,改变一次状态 { this.RDM=this.RDM?false:true; } this.SETCYCLE=function()//设置是否进行循环播放,调用一次,改变一次状态 { this.CYL=this.CYL?false:true; } this.INIT=function() { if(this.RDM==true)//无序播放 { SoundID=GetNextID(MusicLength,this.RDM,this.MASMODE); nextID==GetNextID(MusicLength,this.RDM,this.MASMODE); } if(!M_Stop) { PlayID(SoundID); } } //----------传输播放状态------------------------- this.SENDLRC=function(c_id)//无参数时读取当前歌曲的内容,如果有参数,则读取指定参数歌曲的内容 { if(arguments.length>0)return Music[c_id]; return Music[SoundID];//url:歌曲链接地址,name:歌曲名,file:LRC歌词地址(用于以后的功能扩展),id:歌曲的id } this.RESTA=function()//返回播放器状态 { return mediaObj.playState; } //----------外部播放控制接口------------------------- this.MENUPLAY=function(c_id,n_id)//播放,并且设置当前ID,和下一首的ID(作用是用在新开的窗口的接口) { SoundID=c_id; nextID=n_id; PlayID(SoundID); His.input(SoundID); this.MSG=MsgRefresh(); this.MASMODE=false; } this.GetMusicLength=function()//返回曲目总数 { return MusicLength; } this.OPENMUNU=function()//打开歌曲列表 { var url="XBandLH.htm?"+_objname; WinOPEN=window.open(url,"WinList", " width=250, height=300,scrollbars=1 "); } } </script> <body bgcolor=#000000> <div id=show></div> <input type="button" name="Submit" value="播放" onclick="oo.PLAY();"/> <input type="button" name="Submit2" value="上一首" onclick="oo.REV();" /> <input type="button" name="Submit3" value="下一首" onclick="oo.NEXT();" /> <input type="button" name="Submit0" value="停止" onclick="oo.STOP();" /> <input type="button" name="Submit4" value="打开歌曲列表" onclick="oo.OPENMUNU();" /> <input type="button" name="Submit5" value="随机/顺序" onclick="oo.SETRDM();" /> <input type="button" name="Submit5" value="连续/单曲" onclick="oo.SETCYCLE();" /> <object id='media1' classid=CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6 width='400' height='100'> <param NAME='URL' VALUE=''> <param NAME='rate' VALUE='-1'> <param NAME='balance' VALUE='0'> <param NAME='currentPosition' VALUE='0'> <param NAME='defaultFrame' VALUE=''> <param NAME='playCount' VALUE='1'> <param NAME='autoStart' VALUE='-1'> <param NAME='currentMarker' VALUE='0'> <param NAME='invokeURLs' VALUE='-1'> <param NAME='baseURL' VALUE=''> <param NAME='volume' VALUE='100'> <param NAME='mute' VALUE='0'> <param NAME='uiMode' VALUE='mini'> <param NAME='stretchToFit' VALUE='0'> <param NAME='windowlessVideo' VALUE='0'> <param NAME='enabled' VALUE='-1'> <param NAME='enableContextMenu' VALUE='0'> <param NAME='fullScreen' VALUE='0'> <param NAME='SAMIStyle' VALUE=''> <param NAME='SAMILang' VALUE=''> <param NAME='SAMIFilename' VALUE=''> <param NAME='captioningID' VALUE=''> <param NAME='enableErrorDialogs' VALUE='0'> <param NAME='_cx' VALUE='5080'> <param NAME='_cy' VALUE='5080'> </object> </body> <script language="javascript"> var oo=new classMedia('media1','show','oo');//第一个参数,播放器ID,第二个参数显示歌词容器ID,第三个参数,所创建的的对象变量名称 oo.AddList('http://qz.gx.vnet.cn/bbs/music/0731/02.wma','情归于尽','qingguiyijin.lrc'); oo.AddList('http://qz.gx.vnet.cn/bbs/music/0318/04.wma','熟能生巧','snsq.lrc'); oo.AddList('http://qz.gx.vnet.cn/bbs/music/0318/06.wma','人质','renzi.lrc'); oo.AddList('http://qz.gx.vnet.cn/bbs/music/0318/09.wma','夜曲','yeqi.lrc'); oo.AddList('http://qz.gx.vnet.cn/bbs/music/0318/10.wma','只对你说','zdns.lrc'); oo.AddList('http://bbs.yc360.net/music/suibianxiaohui.mp3','随便','suibian.txt'); oo.AddList('http://202.195.195.137/music/赵传/爱要怎么说出口.mp3','爱要怎么说出口','ayzmsck.lrc'); oo.AddList('http://ctone.zmcc.com.cn/ColorTone/music/03/01/01/c0301010559.wma','一辈子孤单','ybzgd.lrc'); oo.AddList('http://www.eqdu.com/modules/music/upload/music/200681441498453.mp3','青青河边草','qqhebianchao.lrc'); oo.AddList('http://www.vllan.com/bbs/UploadFile/2006-3/200631610291574926.mp3','在那遥远的地方','znyyddf.txt'); oo.AddList('http://www.badmintonfan.com/mv/cksdxz.mp3','从开始到现在 ','kadxz.lrc'); oo.AddList('http://www.tiantian2006.com/闪亮的日子-罗大佑.mp3','闪亮的日子 ','shanlian.lrc'); oo.AddList('http://www.blogd.cn/UploadFiles/2006-11/1113752996.mp3','菊花台','juhuatai.lrc'); oo.AddList('http://www.cxpre.com/tinguting/uploadfile/20059763413933.wma','莫斯科没有眼泪','mosike.lrc'); oo.AddList('http://down.yysy.net/Music/siledouyaoai.mp3','死了都要爱','xileai.lrc'); oo.AddList('http://maolv.cm310.com/mp3/206.mp3','嘟啊嘟'); oo.AddList('http://www.tt99w.com/dj/djku/kanshangta.mp3','看上她','kanshangta.lrc'); oo.AddList('http://www.nnred.com/bbs/mp3/11.mp3','飘移','piaoyi.lrc'); oo.AddList('http://www.1860tm.com/word/firstlove.mp3','第一次爱的人','diyiciairen.lrc'); oo.AddList('http://online.btvu.org/club/forum/files/307.mp3','爱你','ainiwang.lrc'); oo.AddList('http://www.7say.com/music/fly.wma','隐形的翅膀','yinche.lrc'); oo.AddList('http://www.malamusic.com.tw/ezfiles/mala/img/img/2275/marvin7.mp3','轮回'); oo.INIT();//初始化并开始播放 </script> </html>
提示:您可以先修改部分代码再运行
linfeng
小恐龙
UID 32227
精华 0
积分 347
帖子 73
威望 63
阅读权限 30
注册 2005-7-4
状态 离线
#2
大
中
小
使用道具
发表于 2006-12-20 18:50
资料
个人空间
短消息
加为好友
由主页面弹出的菜单页面代码--XBandLH.htm
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD><TITLE>播放清单 </TITLE> <META http-equiv=Content-Type content="text/html; charset=gb2312"> <style> A { COLOR: #334455; TEXT-DECORATION: none } A:link { COLOR: #334455; TEXT-DECORATION: none } A:visited { COLOR: #223344; TEXT-DECORATION: none } A:active { COLOR: #334455; TEXT-DECORATION: none } A:hover { COLOR: gold; TEXT-DECORATION: none } BODY { MARGIN: 0px; CURSOR: crosshair; BACKGROUND-COLOR: #8498a3 } BODY { FONT-SIZE: 9pt; COLOR: #b0c0d0; FONT-FAMILY: 'Tahoma','Verdana','Arial' } TD { FONT-SIZE: 9pt; COLOR: #b0c0d0; FONT-FAMILY: 'Tahoma','Verdana','Arial' } a.redcolor:link,a.redcolor:visited{color:#ff7788;} a.redcolor:hover{color:#FF0000;TEXT-DECORATION:underline; } </style> </HEAD> <BODY onselectstart="return false" ondragstart="return false" leftMargin=0 topMargin=0 marginheight="0" marginwidth="0"> <div style="display:none" id="SoundList"> </div> <TABLE height="100%" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD align=middle width="100%" bgColor=#304050 height=25><IMG height=25 alt="播放清单" src="img/pl.gif" width=157></TD></TR> <TR> <TD vAlign=top> <DIV id=showList> </DIV></TD> </TR> <TR> <TD vAlign=bottom align="center"> <DIV id=pageList><a href="#hxb" id="go0">|<<</a> <a href="#hxb" id="goRev"> <</a> <a href="#hxb" id="goNext">></a> <a href="#hxb" id="goEnd">>>| </a></DIV></TD></TR> <TR> <TD align="center" style="word-break: break-all; word-wrap:break-word;"> <table width="90%" border="0" cellspacing="0" cellpadding="0"> <tr> <td><div id=pagenume></div></td> </tr> </table> </TD></TR> <TR> <TD align=middle bgColor=#304050 height=20><SPAN id=pageInfo></SPAN> <IMG title=全部选取 style="CURSOR: hand" height=10 src="img/pl_btn_allsel.gif" width=35 align=absMiddle border=0 id="selall"> <IMG title=全部不选 style="CURSOR: hand" height=10 src="img/pl_btn_desel.gif" width=35 align=absMiddle border=0 id="nosel"> <IMG title=播放已选取的曲目 style="CURSOR: hand" height=10 src="img/pl_btn_playsel.gif" width=35 align=absMiddle border=0 id="playdsel"> <IMG title=关闭播放清单窗口 style="CURSOR: hand" onclick=window.close() height=10 src="img/pl_btn_winclose.gif" width=35 align=absMiddle border=0> </TD></TR></TBODY></TABLE> </BODY> </HTML> <script language="javascript" type="text/jscript"> var CurrentId=0; var NextSoundId=0; //移除search方法留下的问号) OpenerMedia=eval("opener."+document.location.search.substring(1))//opener.oo; self.focus(); var CurrentPage=0; var PageSize=15; var SonndLenght=OpenerMedia.GetMusicLength(); var pageNume=Math.floor(SonndLenght/PageSize); if(pageNume<SonndLenght/PageSize) { pageNume+=1; } var MPSFlag=OpenerMedia.CYL;//循环 function PageNumeColor(p) { for(var i=0;i<pageNume;i++) { document.getElementById('pNume'+i).className=''; } document.getElementById('pNume'+p).className="redcolor"; } function MadePage(_id){ var htmlTag = document.getElementById('page'+_id); var tagDiv = document.getElementById('showList') if(htmlTag) return; var divobj = document.createElement('div'); divobj.style.display ='none'; divobj.id = 'page'+_id; divobj.innerHTML=MadeListHtml(_id*PageSize,PageSize) tagDiv.appendChild(divobj); } function MadePageNume() { var str='*'; for(var menuPage=0;menuPage<pageNume;menuPage++) { str+="<a href=#hxb onclick='GoPage("+menuPage+")' id='pNume"+menuPage+"'>"+(menuPage+1)+"</a>*" } return str; } function MadeListHtml(st,l) { var str=''; var name=''; while(l-- && st<SonndLenght) { name=OpenerMedia.SENDLRC(st).name;//.BgSoundName[st] str+="<input type=checkbox name=sound value="+st+"><a href=#hxb onclick='p("+st+")'>"+(st+1)+"."+name+"</a><br>"; st++; } return str; } function pageInit(p) { MadePage(0); document.getElementById('page0').style.display=''; document.getElementById('pagenume').innerHTML=MadePageNume(); PageNumeColor(0); } function HiddenPage() { for(var i=0;i<pageNume;i++) { if(document.getElementById('page'+i)) { document.getElementById('page'+i).style.display='none'; } } } function AllNoSel() { var a = document.getElementsByTagName("input"); for (var i=0; i<(a.length); i++) { if (a[i].type == "checkbox") a[i].checked = false; } } function SelAll() { var a = document.getElementsByTagName("input"); for (var i=0; i<(a.length); i++) { if (a[i].type == "checkbox") a[i].checked = true; } } function GoNextPage() { if(CurrentPage==pageNume-1)return; HiddenPage(); CurrentPage++; MadePage(CurrentPage); document.getElementById('page'+CurrentPage).style.display=''; PageNumeColor(CurrentPage); } function GoRevPage() { if(CurrentPage==0)return; HiddenPage(); CurrentPage--; MadePage(CurrentPage); document.getElementById('page'+CurrentPage).style.display=''; PageNumeColor(CurrentPage); } function GoPage0() { HiddenPage(); CurrentPage=0; MadePage(CurrentPage); document.getElementById('page0').style.display=''; PageNumeColor(CurrentPage); } function GoPageEnd() { HiddenPage(); CurrentPage=pageNume-1; MadePage(CurrentPage); document.getElementById('page'+(pageNume-1)).style.display=''; PageNumeColor(CurrentPage); } function GoPage(p) { HiddenPage(); CurrentPage=p; MadePage(CurrentPage); document.getElementById('page'+p).style.display=''; PageNumeColor(CurrentPage); } document.getElementById('selall').onclick=function(){SelAll()}; document.getElementById('nosel').onclick=function(){AllNoSel()}; document.getElementById('goNext').onclick=function(){GoNextPage()}; document.getElementById('goRev').onclick=function(){GoRevPage()}; document.getElementById('goEnd').onclick=function(){GoPageEnd()}; document.getElementById('go0').onclick=function(){GoPage0()}; document.getElementById('playdsel').onclick=function(){PlaySelMusic();}; pageInit(); //------------------------------------------------------------- function GetNextSoundID() { var a = document.getElementsByTagName("input"); var tmp=CurrentId; if(CurrentId==a.length-1)CurrentId=-1; while(CurrentId<a.length-1) { CurrentId++; if(a[CurrentId].type == "checkbox" && a[CurrentId].checked==true)return CurrentId; if(tmp!=-1 && CurrentId==a.length-1) { CurrentId=-1; tmp=-1; } } return(0); } function window.onunload() { OpenerMedia.MASMODE=true; } function p(x) { OpenerMedia.PLAY(x); opener=null; window.close(); } function PlaySelMusic() { CurrentId=-1; OpenerMedia.MENUPLAY(GetNextSoundID(),GetNextSoundID()); } </script>
提示:您可以先修改部分代码再运行
Azamat
爬虫
UID 53804
精华 0
积分 173
帖子 72
威望 63
阅读权限 20
注册 2006-6-29
来自 阿勒泰
状态 离线
#3
大
中
小
使用道具
发表于 2006-12-20 21:59
资料
个人空间
主页
短消息
加为好友
谢谢
收藏了
Azamat 是少数民族,成人,英雄的含义。
--------------------------------
ant520
爬虫
UID 44031
精华 0
积分 97
帖子 25
威望 43
阅读权限 20
注册 2005-12-14
状态 离线
#4
大
中
小
使用道具
发表于 2006-12-21 09:47
资料
个人空间
短消息
加为好友
慢啊
慢啊
kacoo
小恐龙
UID 62998
精华 0
积分 288
帖子 93
威望 91
阅读权限 30
注册 2006-12-18
状态 离线
#5
大
中
小
使用道具
发表于 2006-12-21 17:56
资料
个人空间
短消息
加为好友
能不能将列表与播放器放在同一页?
linfeng
小恐龙
UID 32227
精华 0
积分 347
帖子 73
威望 63
阅读权限 30
注册 2005-7-4
状态 离线
#6
大
中
小
使用道具
发表于 2006-12-21 22:25
资料
个人空间
短消息
加为好友
这是本人写的一个播放器的例子
界面和功能有待大家一起来进行完善,
注:播放器内含自己写的LRC类,具有播放歌词的功能。
[[i] 本帖最后由 linfeng 于 2006-12-21 23:07 编辑 [/i]]
附件:
您所在的用户组无法下载或查看附件
sh0w
爬虫
UID 58780
精华 0
积分 131
帖子 64
威望 66
阅读权限 20
注册 2006-11-3
状态 离线
#7
大
中
小
使用道具
发表于 2006-12-23 10:19
资料
个人空间
短消息
加为好友
找了好久了,谢谢了呀
,还有一个问题,打开播放列表是空的
[[i] 本帖最后由 sh0w 于 2006-12-23 10:22 编辑 [/i]]
linfeng
小恐龙
UID 32227
精华 0
积分 347
帖子 73
威望 63
阅读权限 30
注册 2005-7-4
状态 离线
#8
大
中
小
使用道具
发表于 2006-12-24 08:37
资料
个人空间
短消息
加为好友
播放列表是用打开窗口处理的
要以XBandLH.htm
为文件名。
在我上传的附件我下载了再试,是正常的(IE6)
奇怪
爬虫
UID 56317
精华 0
积分 123
帖子 103
威望 34
阅读权限 20
注册 2006-9-11
状态 离线
#9
大
中
小
使用道具
发表于 2006-12-24 11:25
资料
个人空间
短消息
加为好友
很不错的说!
www.soulcradle.com 此网站没有病毒,请放心浏览!
kacoo
小恐龙
UID 62998
精华 0
积分 288
帖子 93
威望 91
阅读权限 30
注册 2006-12-18
状态 离线
#10
大
中
小
使用道具
发表于 2006-12-25 11:03
资料
个人空间
短消息
加为好友
QUOTE:
原帖由 [i]linfeng[/i] 于 2006-12-24 08:37 发表
要以XBandLH.htm
为文件名。
在我上传的附件我下载了再试,是正常的(IE6)
测试了基本正常!
94ok
霸王龙
UID 11533
精华
1
积分 1510
帖子 820
威望 861
阅读权限 70
注册 2004-5-16
状态 离线
#11
大
中
小
使用道具
发表于 2006-12-26 19:02
资料
个人空间
短消息
加为好友
封装的不错,哪位能帮忙改改,把这个也封装一下,网址:
http://bbs.51js.com/thread-64455-1-1.html
。
投票
交易
悬赏
活动
最近访问的论坛 ...
原创文章 & 讨论汇总版
Html & XHtml & CSS 网页制作讨论版
ASP & Access & SQL Server 后台编程讨论版
Flex & Flash 技术讨论版
经典代码、教程资源库
休闲留言板
无忧脚本
无忧脚本技术讨论区
> 原创文章 & 讨论汇总版
> Html & XHtml & CSS 网页制作讨论版
> JavaScript & VBScript & DHTML 脚本技术讨论版
> XML & XSL & XPath & VML 网页技术讨论版
> ASP & Access & SQL Server 后台编程讨论版
> PHP & MySQL 后台编程讨论版
> JSP & Java & J2SE 后台编程讨论版
> .Net 相关技术讨论版
> Web 服务器技术
> Flex & Flash 技术讨论版
> Web UI & 图形技术讨论版
无忧脚本资源服务区
> 经典代码、教程资源库
> 参考手册、常用软件资源库
> 无忧合租服务器讨论版
无忧脚本休闲区
> 休闲留言板
> 招聘求职、网站推荐、广告信息版
> 无忧站务管理版
> 垃圾帖回收站
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
升级个人空间
基本概况
流量统计
客户软件
发帖量记录
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
当前时区 GMT+8, 现在时间是 2010-7-31 04:52
苏ICP备05080427号
Powered by
Discuz!
5.5.0
© 2001-2007
51JS.COM
Processed in 0.187302 second(s), 8 queries , Gzip enabled
TOP
清除 Cookies
-
联系我们
-
无忧脚本
-
Archiver