如何用JS判断音乐播放完毕,如完毕则跳转到另一网页

ziyuanxian 2009-05-09 04:01:58
如何当前音乐已经放完,则弹出窗口提示“音乐已经播放完毕”,或都直截跳转动主页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时,就跳转。
但实现不了。
不知还有什么办法判断音乐是否播放完毕,如完毕则跳转到另一网页。
...全文
1583 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
caiying2009 2009-05-10
  • 打赏
  • 举报
回复

<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 timer

timer=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>


natineprince 2009-05-09
  • 打赏
  • 举报
回复
不要用String的.数字字符不能直接相减
ziyuanxian 2009-05-09
  • 打赏
  • 举报
回复
setInterval("if(aboutplayer.currentMedia.durationString-aboutplayer.controls.currentPositionString<2){alert(aboutplayer.playState);}",1000);
我想用总时间减去现在已播放的显示时间,如果小于2S,就弹出现在的状态。这样写是不对,不过我也不知道怎么写。
还有,不知道时间能不能相减。
natineprince 2009-05-09
  • 打赏
  • 举报
回复
1000是按毫秒算的.也就是1秒.
你可以加快点.但是注意别搞到自己关不了浏览器.

后面的加上就没反应吗?
那就奇怪了..

有观察到playState的变化吗?
ziyuanxian 2009-05-09
  • 打赏
  • 举报
回复
前面加上以后是有反应的,不过好像需要一些反应的时间
natineprince 2009-05-09
  • 打赏
  • 举报
回复
那就是setInterval没正常运作了.
你前面的代码或者那句代码有错.
前面3那句也加加看看有弹出没?
ziyuanxian 2009-05-09
  • 打赏
  • 举报
回复
现在的问题是alert什么都没反应,歌一结束就自动跳动开始的地方了。没出现alert的弹出提示.
natineprince 2009-05-09
  • 打赏
  • 举报
回复
试试加个alert(aboutplayer.playState)先看看setInterval能正常运作不.

看看最后aboutplayer.playState是什么状态.
ziyuanxian 2009-05-09
  • 打赏
  • 举报
回复
<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>

这样不行的,什么反应都没有。
natineprince 2009-05-09
  • 打赏
  • 举报
回复
setInterval("if(aboutplayer.playState==3){itcn.style.width=parseInt(245*(aboutplayer.controls.currentPosition/aboutplayer.currentMedia.duration))}",1000);
像你这里写的
setInterval("if(aboutplayer.playState==8){在这里写你要做的事情}",1000);
ziyuanxian 2009-05-09
  • 打赏
  • 举报
回复
其实是我不太懂啦
natineprince 2009-05-09
  • 打赏
  • 举报
回复
你那里是if(aboutplayer.playState==8)
ziyuanxian 2009-05-09
  • 打赏
  • 举报
回复
如何获取到播放状态呢,是不是在JS里写个IF语句,
<script>
if(wmp.playState==8){alert('上传出错!');}
</script>
我对JS懂得不多,还望多说明一下。
王集鹄 2009-05-09
  • 打赏
  • 举报
回复
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 的秒数形式显示,精确到毫秒
natineprince 2009-05-09
  • 打赏
  • 举报
回复
可以获取到播放状态,当 PlayState = 8 是播放完毕.

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧