如何当前音乐已经放完,则弹出窗口提示“音乐已经播放完毕”,或都直截跳转动主页Index.asp.
<div id="time" style="background:#000000;width:480;FONT-SIZE:11px; COLOR: #00FF00" ><font color=ffffff>Loading …</font></div>
<object classid="clsid:6bf52a52-394a-11d3-b153-00c04f79faa6" id="aboutplayer" WIDTH="480" HEIGHT="45">
<param name="URL" value="一醉解千愁.wma">
<param name="volume" value="100">
<param name="enablecontextmenu" value="0">
<param name="enableerrordialogs" value="0"><param NAME="PlayCount" VALUE="999"> 
        <param name="Album" value="时代潮"/>
        <param name="rate" value="1">
        <param name="balance" value="0">
        <param name="currentPosition" value="0">
        <param name="defaultFrame" value="">
        <param name="playCount" value="100">
        <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="full">
        <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="">
</object>
<script language="javascript"> 
var volv=aboutplayer.settings.volume;
//注意下行的\'|\'
setInterval("if(aboutplayer.playState==3){time.innerText='和答网络                                              '+aboutplayer.controls.currentPositionString+\'|\'+ aboutplayer.currentMedia.durationString}",1000);
if(aboutplayer.currentMedia.durationString-aboutplayer.controls.currentPositionString<1){alert("不能再删了^_^");}
setInterval("if(aboutplayer.playState==3){itcn.style.width=parseInt(245*(aboutplayer.controls.currentPosition/aboutplayer.currentMedia.duration))}",1000);
function volup(){
if (volv<100){
volv+=5;
aboutplayer.settings.volume=volv;
time.innerText=volv;}
else{time.innerText='最大';}
}
function voldown(){
if (volv>0){
volv-=5;
aboutplayer.settings.volume=volv;
time.innerText=volv;}
else{time.innerText='最小';}
}
</script>
我的想法是,先得出音乐时间长度,当时间放到倒数1S时,就跳转。
但实现不了。
不知还有什么办法判断音乐是否播放完毕,如完毕则跳转到另一网页。

解决方案 »

  1.   

    可以获取到播放状态,当 PlayState = 8 是播放完毕.
      

  2.   

    wmp.playState==1                 //停止播放
    wmp.playState==2                 //暂停播放
    wmp.playState==3                 //正常播放
    wmp.playState==4                 //向前搜索
    wmp.playState==5                 //向后搜索
    wmp.playState==6                 //缓冲处理
    wmp.playState==7                 //等待反应
    wmp.playState==8                 //播放完毕
    wmp.playState==9                 //连接媒体
    wmp.playState==10               //准备就绪wmp.controls.currentPositionString     //取得媒体当前位置,以形如 06:01 的时间形式显示
    wmp.controls.currentPosition              //取得媒体当前位置,以形如 300.001 的秒数形式显示,精确到毫秒
    wmp.currentMedia.durationString       //取得媒体总长度,以形如 06:01 的时间形式显示
    wmp.currentMedia.duration                //取得媒体总长度,以形如 300.001 的秒数形式显示,精确到毫秒
      

  3.   

    如何获取到播放状态呢,是不是在JS里写个IF语句,
    <script>
    if(wmp.playState==8){alert('上传出错!');}
    </script>
    我对JS懂得不多,还望多说明一下。
      

  4.   

    你那里是if(aboutplayer.playState==8)
      

  5.   

    setInterval("if(aboutplayer.playState==3){itcn.style.width=parseInt(245*(aboutplayer.controls.currentPosition/aboutplayer.currentMedia.duration))}",1000);
    像你这里写的
    setInterval("if(aboutplayer.playState==8){在这里写你要做的事情}",1000);
      

  6.   

    <div id="time" style="background:#000000;width:480;FONT-SIZE:11px; COLOR: #00FF00" ><font color=ffffff>Loading …</font></div>
    <object classid="clsid:6bf52a52-394a-11d3-b153-00c04f79faa6" id="aboutplayer" WIDTH="480" HEIGHT="45">
    <param name="URL" value="范玮琪 - 那些花儿.mp3">
    <param name="volume" value="100">
    <param name="enablecontextmenu" value="0">
    <param name="enableerrordialogs" value="0"><param NAME="PlayCount" VALUE="999"> 
            <param name="Album" value="时代潮"/>
            <param name="rate" value="1">
            <param name="balance" value="0">
            <param name="currentPosition" value="0">
            <param name="defaultFrame" value="">
            <param name="playCount" value="100">
            <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="full">
            <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="">
    </object>
    <script language="javascript"> 
    var volv=aboutplayer.settings.volume;
    //注意下行的\'|\'
    setInterval("if(aboutplayer.playState==3){time.innerText='和答网络                                              '+aboutplayer.controls.currentPositionString+\'|\'+ aboutplayer.currentMedia.durationString}",1000);
    setInterval("if(aboutplayer.playState==8){self.location='http://www.qipao8.com/code/js-code-3.html';}",1000); 
    function volup(){
    if (volv<100){
    volv+=5;
    aboutplayer.settings.volume=volv;
    time.innerText=volv;}
    else{time.innerText='最大';}
    }
    function voldown(){
    if (volv>0){
    volv-=5;
    aboutplayer.settings.volume=volv;
    time.innerText=volv;}
    else{time.innerText='最小';}
    }
    </script>
    这样不行的,什么反应都没有。
      

  7.   

    试试加个alert(aboutplayer.playState)先看看setInterval能正常运作不.看看最后aboutplayer.playState是什么状态.
      

  8.   

    现在的问题是alert什么都没反应,歌一结束就自动跳动开始的地方了。没出现alert的弹出提示.
      

  9.   

    那就是setInterval没正常运作了.
    你前面的代码或者那句代码有错.
    前面3那句也加加看看有弹出没?
      

  10.   

    1000是按毫秒算的.也就是1秒.
    你可以加快点.但是注意别搞到自己关不了浏览器.后面的加上就没反应吗?
    那就奇怪了..有观察到playState的变化吗?
      

  11.   

    setInterval("if(aboutplayer.currentMedia.durationString-aboutplayer.controls.currentPositionString<2){alert(aboutplayer.playState);}",1000); 
    我想用总时间减去现在已播放的显示时间,如果小于2S,就弹出现在的状态。这样写是不对,不过我也不知道怎么写。
    还有,不知道时间能不能相减。
      

  12.   

    不要用String的.数字字符不能直接相减
      

  13.   


    <div id="time" style="background:#000000;width:480;FONT-SIZE:11px; COLOR: #00FF00" ><font color=ffffff>和答网络-Loading …</font></div>
    <object classid="clsid:6bf52a52-394a-11d3-b153-00c04f79faa6" id="aboutplayer" WIDTH="480" HEIGHT="45">
    <param name="URL" value="olympic-youandme.wma">
    <param name="volume" value="100">
    <param name="enablecontextmenu" value="0">
    <param name="enableerrordialogs" value="0">
    <param NAME="PlayCount" VALUE="999"> 
    <param name="Album" value="时代潮"/>
    <param name="rate" value="1">
    <param name="balance" value="0">
    <param name="currentPosition" value="0">
    <param name="defaultFrame" value="">
    <param name="playCount" value="100">
    <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="full">
    <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="">
    </object>
    <script language="javascript">
    var timertimer=setInterval(
    function(){
    if(aboutplayer.controls.currentPositionString!="")var str='和答网络-'+aboutplayer.controls.currentPositionString+'|'+ aboutplayer.currentMedia.durationString
    else var str='和答网络-Loading …'
    time.innerText=str
    if ((aboutplayer.currentMedia.duration-aboutplayer.controls.currentPosition)<=2){
    alert(aboutplayer.playState)
    //other....
    }
    },1000);
    </script>