MyHTML Player release v1.1

<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);
 strHTML=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>
分页:<br>
<div id=musicListNav></div>
<hr>
<marquee scrolldelay=50 scrollamount=1>
Tips: 把歌曲拖入播放列表
&nbsp;&nbsp;&nbsp;&nbsp;
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>

上一篇: javascript控制网页播放器包括mediaplayer和realplayer
下一篇: 如何在同一页面内实现音乐选择连播?
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: 3567
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭

 广告位

↑返回顶部↑