- <html>
- <head>
- <title>My HTML Player - By Hutia</title>
- <hta:application id="app1" singleinstance="yes" contextmenu="yes"
- sysmenu="yes" windowstate="normal" maximizeButton="no" minimizeButton="yes"
- applicationName="MyHTMLPlayer" version="1.1" innerBorder="no"
- caption="yes" showintaskbar="yes" border="thin" />
- <meta http-equiv="content-type" content="text/html; charset="gb2312">
- <style>
- body {
- overflow:auto;
- font-size:12px;
- cursor:default;
- padding:3px;
- margin:0px;
- border-width:0px;
- }
- #f1 {
- display:none;
- }
- #table01 {
- font-size:12px;
- background-Color:black;
- color:white;
- text-align:center;
- float:left;
- height:300px;
- }
- #table01 td{
- vertical-align:top;
- }
- #MediaPlayer1 {
- width:300px;
- height:300px;
- }
- #playListTitle {
- background-Color:#001122;
- color:white;
- font-size:12px;
- font-weight:bold;
- width:100%;
- height:16px;
- padding:2px;
- }
- #playList {
- width:150px;
- height:280;
- margin:0px;
- font-size:12px;
- background-Color:black;
- color:white;
- }
- #musicList {
- width:260px;
- border:buttonface 4px groove;
- height:200px;
- float:right;
- }
- #musicListTitle {
- font-size:13px;
- width:100%;
- height:20px;
- background-Color:#C5FFC5;
- padding:3px;
- font-weight:bold;
- }
- #musicListContent {
- height:200px;
- }
- #musicList .item {
- width:100%;
- height:20px;
- line-height:12px;
- padding:0px;
- margin:0px;
- overflow-y:hidden;
- }
- #musicList .item a {
- color:#773;
- text-decoration:none;
- width:180px;
- height:20px;
- line-height:12px;
- padding-top:5px;
- padding-left:10px;
- margin:0px;
- position:relative;
- overflow:hidden;
- text-overflow:ellipsis;
- }
- #musicListNav {
- height:18px;
- }
- #processBar {
- position:absolute;
- width:99%;
- height:30px;
- border:buttonface 2px inset;
- z-Index:99;
- background-Color:#FFF;
- bottom:5px;
- left:5px;
- padding:5px;
- }
- .add2ListBtn {
- width:18px;
- line-height:14px;
- text-align:center;
- cursor:hand;
- font-size:14px;
- font-family:Webdings;
- }
- .add2ListBtn2 {
- width:18px;
- line-height:14px;
- text-align:center;
- cursor:hand;
- font-size:14px;
- }
- </style>
- <script>
- //****全局变量定义区************
- taskState="loadList";
- url="http://list.mp3.baidu.com/topso/mp3topsong.html";
- taskURLs=new Array();
- taskNames=new Array();
- pageSize=10;
- pageNo=0;
- currentTask=pageNo*pageSize;
- maxTask=currentTask+pageSize;
- windowWidth=740;
- windowHeight=400;
- //****初始化组件***************
- try{
- var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
- }catch(e){
- document.write("<h3>加载失败,组件被禁止</h3>");
- }
- try{
- top.moveTo((screen.availWidth-windowWidth)/2,(screen.availHeight-windowHeight)/2);
- top.resizeTo(windowWidth,windowHeight);
- }catch(e){}
- //****过程函数区***************
- //---初始化-------
- function init(){
- MediaPlayer1.AutoRewind=false;
- MediaPlayer1.AutoStart=true;
- MediaPlayer1.SendPlayStateChangeEvents=true;
- MediaPlayer1.attachEvent("PlayStateChange",checkPlayStatus);
- initLoadMusic();
- }
- //####关于baidu音乐获取的代码######
- //---初始化下载-----
- function initLoadMusic(){
- currentTask=pageNo*pageSize-1;
- maxTask=currentTask+pageSize;
- musicListContent.innerHTML="";
- processBar.style.display="";
- loadBaiduMusic();
- }
- //---开始从baidu下载音乐-----
- function loadBaiduMusic(){
- //如果状态是loadMusic那么从url列表取下载地址
- if(taskState=="loadMusic"){
- currentTask++;
- if(currentTask>maxTask||currentTask>taskURLs.length-1){
- //下载完成
- try{clearTimeout(vbTimer);}catch(e){}
- processBar.style.display="none";
- createNavigate();
- return(false);
- }
- if(currentTask>taskURLs.length-1){
- currentTask--;
- setTimeout(loadBaiduMusic,1000);
- return(false);
- }
- url=taskURLs[currentTask];
- }
- xmlHttp.open("GET",url,true);
- xmlHttp.send();
- xmlHttp.onreadystatechange=checkXMLHttpState;
- checkXMLHttpState();
- }
- //----处理下载-----
- function checkXMLHttpState(){
- if (xmlHttp.readyState==4){
- if (xmlHttp.status==200){
- if(taskState=="loadList"){
- taskState="loadMusic";
- //分析下载内容生成歌曲地址列表
- analyBaiduList();
- currentTask=-1;
- }else{
- //获得mp3的真实地址
- analyBaiduMusic();
- }
- }
- loadBaiduMusic();
- }
- }
- //----分析下载内容生成歌曲地址列表----
- function analyBaiduList(){
- var strHTML=b2s(xmlHttp.responseBody);
- var iStart=strHTML.search(/<body/i);
- var iEnd=strHTML.toLowerCase().indexOf("<//script",iStart+5);
- strHTMLstrHTML=strHTML.substring(iStart,iEnd);
- var fff=document.createElement("Iframe");
- fff.id="tempFrame";
- fff.style.display="none";
- document.body.insertBefore(fff);
- theWin=eval("tempFrame");
- theWin.document.open();
- theWin.document.clear();
- theWin.document.write(strHTML);
- theWin.document.close();
- for(var i=0;i<theWin.document.links.length;i++){
- if(theWin.document.links[i].href.match(/mp3.baidu.com//m/?tn=baidump3/&ct=/i)&&theWin.document.links[i].parentNode.firstChild==theWin.document.links[i]){
- //将url存入taskURLs,歌曲名称存入taskNames
- taskURLs[taskURLs.length]=theWin.document.links[i].href.replace(/lm=-1/,"lm=0");
- taskNames[taskNames.length]=theWin.document.links[i].innerText;
- }
- }
- fff.outerHTML="";
- }
- //----获得mp3的真实地址,添加到music list-----
- function analyBaiduMusic(){
- var strHTML=b2s(xmlHttp.responseBody);
- var strTxt=taskNames[currentTask];
- //匹配URL的正则
- var aryURL=strHTML.match(/ http:////[^ ]+ /gi);
- if(!aryURL){return(false);}
- var theC=document.createElement("DIV");
- theC.className="item";
- musicListContent.insertBefore(theC);
- //获取10个地址以免链接失效
- for(var i=0;i<10&&i<aryURL.length;i++){
- //每个item的容器
- var theD=document.createElement("DIV");
- theD.onmouseover=musicList_mouseover;
- theD.onmouseout=musicList_mouseout;
- //link元素
- var theLink=document.createElement("A");
- var strURL=aryURL[i].substring(2,aryURL[i].length-2);
- theLink.href=strURL;
- theLink.title=strURL;
- theLink.innerText=(currentTask+1)+"."+strTxt;
- if(i>0){theLink.innerText+="."+(i+1);}
- theLink.onclick=musicList_item_click;
- theD.insertBefore(theLink);
- //添加到列表按钮
- theButton=document.createElement("Span");
- theButton.className="add2ListBtn";
- theButton.innerText="1";
- theButton.title="添加到列表";
- theButton.onclick=musicList_add2ListBtn_click;
- theButton.onmouseover=musicList_item_mouseover;
- theButton.onmouseout=musicList_item_mouseout;
- theD.insertBefore(theButton);
- //上卷按钮
- theButton=document.createElement("Span");
- theButton.className="add2ListBtn";
- theButton.innerText="3";
- theButton.title="上卷";
- theButton.onclick=musicList_scrollUpBtn_click;
- theButton.onmouseover=musicList_item_mouseover;
- theButton.onmouseout=musicList_item_mouseout;
- theD.insertBefore(theButton);
- //下卷按钮
- theButton=document.createElement("Span");
- theButton.className="add2ListBtn";
- theButton.innerText="4";
- theButton.title="下卷";
- theButton.onclick=musicList_scrollDownBtn_click;
- theButton.onmouseover=musicList_item_mouseover;
- theButton.onmouseout=musicList_item_mouseout;
- theD.insertBefore(theButton);
- //打开新窗口按钮
- theButton=document.createElement("Span");
- theButton.className="add2ListBtn";
- theButton.innerText="2";
- theButton.title="打开新窗口";
- theButton.onclick=musicList_newWinBtn_click;
- theButton.onmouseover=musicList_item_mouseover;
- theButton.onmouseout=musicList_item_mouseout;
- theD.insertBefore(theButton);
- theC.insertBefore(theD);
- }
- }
- //####关于播放器播放音乐的代码######
- //----检查播放器状态-------
- function checkPlayStatus(oldState,newState){
- try{
- if(MediaPlayer1.PlayState==0){
- MediaPlayer1.detachEvent("PlayStateChange",checkPlayStatus);
- MediaPlayer1.stop();
- if(playList.options.selectedIndex<playList.options.length-1){
- playList.options[playList.options.selectedIndex+1].selected=true;
- }else{
- playList.options[0].selected=true;
- }
- MediaPlayer1.fileName=playList.value;
- MediaPlayer1.play();
- setTimeout('MediaPlayer1.attachEvent("PlayStateChange",checkPlayStatus);',5000);
- }
- }catch(e){}
- }
- //**********Event Function Area***************
- //----------Play List Event Start-------------
- function playList_dragOver(){
- event.returnValue=false;
- }
- function playList_dragEnter(){
- event.returnValue=false;
- event.dataTransfer.dropEffect='link';
- }
- function playList_drop(){
- strTxt=unescape(event.dataTransfer.getData('Text').split(":")[0]).replace(//[/+/]/,"");;
- strURL=unescape(event.dataTransfer.getData('Text').split(":")[1]).replace(//[/+/]/,"");;
- playList.options[playList.options.length]=new Option(strTxt,strURL);
- }
- function playList_keyDown(){
- if(event.keyCode==46){
- try{
- playList.options[playList.options.selectedIndex].outerHTML="";
- }catch(e){}
- return(false);
- }
- if(event.keyCode==13){
- playList_dblClick();
- return(false);
- }
- }
- function playList_dblClick(){
- MediaPlayer1.detachEvent("PlayStateChange",checkPlayStatus);
- MediaPlayer1.fileName=playList.value;
- MediaPlayer1.play();
- setTimeout('MediaPlayer1.attachEvent("PlayStateChange",checkPlayStatus);',1000);
- }
- //----------Music List Event Start-------------
- function musicList_dragStart(){
- if(event.srcElement.tagName=='A'){
- event.dataTransfer.setData('Text',escape(event.srcElement.innerText)+":"+escape(event.srcElement.href));
- }else{
- return(false);
- }
- }
- function musicList_mouseover(){
- this.style.backgroundColor="#D5EFD5";
- }
- function musicList_mouseout(){
- this.style.backgroundColor="";
- }
- function musicList_item_mouseover(){
- this.style.color="gold";
- }
- function musicList_item_mouseout(){
- this.style.color="";
- }
- function musicList_item_click(){
- strTxt=event.srcElement.innerText;
- strURL=event.srcElement.href;
- playList.innerHTML="";
- playList.options[0]=new Option(strTxt,strURL);
- playList.options[0].selected=true;
- event.returnValue=false;
- playList_dblClick();
- return(false);
- }
- function musicList_add2ListBtn_click(){
- strTxt=event.srcElement.parentNode.firstChild.innerText.replace(//[/+/]/,"");
- strURL=event.srcElement.parentNode.firstChild.href;
- playList.options[playList.options.length]=new Option(strTxt,strURL);
- return(false);
- }
- function musicList_scrollUpBtn_click(){
- this.parentNode.parentNode.scrollTop-=20;
- }
- function musicList_scrollDownBtn_click(){
- this.parentNode.parentNode.scrollTop+=20;
- }
- function musicList_newWinBtn_click(){
- open(this.parentNode.firstChild.href);
- }
- function musicList_nav_click(){
- pageNo=this.pageID;
- musicListNav.disabled=true;
- this.style.color="#FF0000";
- for(var i=0;i<musicListNav.all.tags("span");i++){
- musicListNav.all.tags("span")[i].onclick=null;
- }
- initLoadMusic();
- }
- //**********Private Functions Lib***************
- function b2s(b){
- var adodbStream=new ActiveXObject("ADODB.Stream");
- adodbStream.Type=1;//1=adTypeBinary
- adodbStream.Open();
- adodbStream.write(b);
- adodbStream.position=0;
- adodbStream.Type=2;
- adodbStream.charset="gb2312";
- //adodbStream.charset="_autodetect_all";
- var re=adodbStream.readText();
- adodbStream=null;
- return(re);
- }
- function createNavigate(){
- musicListNav.innerHTML="";
- musicListNav.disabled=false;
- var theMax=taskURLs.length;
- var theC=document.createElement("span");
- musicListNav.insertBefore(theC);
- theMin=pageNo-4>0?pageNo-4:0;
- thePageCount=parseInt(theMax/pageSize)+(theMax%pageSize==0?0:1);
- theMax=pageNo+5<thePageCount?pageNo+5:thePageCount;
- theButton=document.createElement("span");
- theButton.className="add2ListBtn";
- theButton.innerText="7";
- theButton.pageID=0;
- theButton.onmouseover=musicList_item_mouseover;
- theButton.onmouseout=musicList_item_mouseout;
- theButton.onclick=musicList_nav_click;
- theC.insertBefore(theButton);
- for(var j=theMin;j<theMax;j++){
- theButton=document.createElement("span");
- theButton.className="add2ListBtn2";
- theButton.innerText=j+1;
- theButton.pageID=j;
- if(j!=pageNo){
- theButton.onmouseover=musicList_item_mouseover;
- theButton.onmouseout=musicList_item_mouseout;
- theButton.onclick=musicList_nav_click;
- }else{
- theButton.style.color="Blue";
- }
- theC.insertBefore(theButton);
- }
- theButton=document.createElement("span");
- theButton.className="add2ListBtn";
- theButton.innerText="8";
- theButton.pageID=thePageCount-1;
- theButton.onmouseover=musicList_item_mouseover;
- theButton.onmouseout=musicList_item_mouseout;
- theButton.onclick=musicList_nav_click;
- theC.insertBefore(theButton);
- }
- </script>
- <body onload="init();">
- <!-- 歌曲列表 -->
- <div id=musicList ondragstart="musicList_dragStart();">
- <div id=musicListTitle>All Music</div>
- <div id=musicListContent></div>
- <hr>
- 分页:
- <div id=musicListNav></div>
- <hr>
- <marquee scrolldelay=50 scrollamount=1>
- Tips: 把歌曲拖入播放列表
- Tips: 无法播放时点击左右箭头更换音乐地址
- </marquee>
- </div>
- <!-- 状态栏 -->
- <div id=processBar style="display:none;">Processing...</div>
- <!-- 播放器 -->
- <table id=table01>
- <tr>
- <td>
- <object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" id="MediaPlayer1" STANDBY="Loading Windows Media Player components..." TYPE="application/x-oleobject">
- <param name="AudioStream" value="-1">
- <param name="AutoSize" value="-1">
- <!--是否自动调整播放大小-->
- <param name="AutoStart" value="0">
- <!--是否自动播放-->
- <param name="AnimationAtStart" value="-1">
- <param name="AllowScan" value="-1">
- <param name="AllowChangeDisplaySize" value="-1">
- <param name="AutoRewind" value="0">
- <param name="Balance" value="0">
- <!--左右声道平衡,最左-9640,最右9640-->
- <param name="BaseURL" value>
- <param name="BufferingTime" value="15">
- <!--缓冲时间-->
- <param name="CaptioningID" value>
- <param name="ClickToPlay" value="-1">
- <param name="CursorType" value="0">
- <param name="CurrentPosition" value="0">
- <!--当前播放进度 -1 表示不变,0表示开头 单位是秒,比如10表示从第10秒处开始播放,值必须是-1.0或大于等于0-->
- <param name="CurrentMarker" value="0">
- <param name="DefaultFrame" value>
- <param name="DisplayBackColor" value="0">
- <param name="DisplayForeColor" value="16777215">
- <param name="DisplayMode" value="0">
- <param name="DisplaySize" value="0">
- <!--视频1-50%, 0-100%, 2-200%,3-全屏 其它的值作0处理,小数则采用四舍五入然后按前的处理-->
- <param name="Enabled" value="-1">
- <param name="EnableContextMenu" value="-1">
- <!-是否用右键弹出菜单控制-->
- <param name="EnablePositionControls" value="-1">
- <param name="EnableFullScreenControls" value="-1">
- <param name="EnableTracker" value="-1">
- <!--是否允许拉动播放进度条到任意地方播放-->
- <param name="Filename" value="" valuetype="ref">
- <param name="InvokeURLs" value="-1">
- <param name="Language" value="-1">
- <param name="Mute" value="0">
- <!--是否静音-->
- <param name="PlayCount" value="10">
- <!--重复播放次数,0为始终重复-->
- <param name="PreviewMode" value="-1">
- <param name="Rate" value="1">
- <!--播放速度1.0-2.0倍的速度播放-->
- <param name="SAMILang" value>
- <param name="SAMIStyle" value>
- <param name="SAMIFileName" value>
- <!--选择同时播放(伴音)的歌曲-->
- <param name="SelectionStart" value="-1">
- <param name="SelectionEnd" value="-1">
- <param name="SendOpenStateChangeEvents" value="-1">
- <param name="SendWarningEvents" value="-1">
- <param name="SendErrorEvents" value="-1">
- <param name="SendKeyboardEvents" value="0">
- <param name="SendMouseClickEvents" value="0">
- <param name="SendMouseMoveEvents" value="0">
- <param name="SendPlayStateChangeEvents" value="-1">
- <param name="ShowCaptioning" value="0">
- <!--是否显示字幕,为一块黑色,下面会有一大块黑色,一般不显示-->
- <param name="ShowControls" value="-1">
- <!--是否显示控制,比如播放,停止,暂停-->
- <param name="ShowAudioControls" value="-1">
- <!--是否显示音量控制-->
- <param name="ShowDisplay" value="0">
- <!--显示节目信息,比如版权等-->
- <param name="ShowGotoBar" value="0">
- <!--一条框,在下面,有往下箭头-->
- <param name="ShowPositionControls" value="-1">
- <!--是否显示往前往后及列表,如果显示一般也都是灰色不可控制-->
- <param name="ShowStatusBar" value="-1">
- <!--当前播放信息,显示是否正在播放,及总播放时间和当前播放到的时间-->
- <param name="ShowTracker" value="-1">
- <!--是否显示当前播放跟踪条,即当前的播放进度条-->
- <param name="TransparentAtStart" value="-1">
- <param name="VideoBorderWidth" value="0">
- <!--显示部的宽部,如果小于视频宽,则最小为视频宽,或者加大到指定值,并自动加大高度.此改变只改变四周的黑框大小,不改变视频大小-->
- <param name="VideoBorderColor" value="0">
- <!--显示黑色框的颜色, 为RGB值,比如ffff00为黄色-->
- <param name="VideoBorder3D" value="0">
- <param name="Volume" value="0">
- <!--音量大小,负值表示是当前音量的减值,值自动会取绝对值,最大为0,最小为-9640,最大0-->
- <param name="WindowlessVideo" value="0">
- <!--如果是0可以允许全屏,否则只能在窗口中查看-->
- </object>
- </td>
- <td>
- <div id=playListTitle>Play List:</div>
- <select id=playList size=2 ondragover="playList_dragOver();" ondragenter="playList_dragEnter();"
- ondrop="playList_drop();" onkeydown="playList_keyDown();" ondblclick="playList_dblClick();">
- </select>
- </td>
- </tr>
- </table>
- <body>
- </html>
新闻热点
疑难解答