我在this test page上有一个音乐播放器。可以通过head标记内的页面源查看所调用的外部JavaScript文件。他们是
/js/jquery-1.6.1min.js
/js/myplaylist.js
/plugin/ttw-music-player.js
(放置复选框的脚本可在此文件中找到)
我还有两部分内部JavaScript:
<script type="text/javascript">
$(document).ready(function() {
var description = '<p align="center">Classic and Southern Rock<br /><i>Check the songs you want, then click the first title checked to begin playing.</p></i><br /><input type="button" onclick="uncheckAll()" value="Clear"/><input class="check" type="button" onclick="checkAll()" value="Select All"/>';
$('#yipPlayer').ttwMusicPlayer(myPlaylist, {
autoPlay: false,
description: description,
jPlayer: {
swfPath: 'plugin/jquery-jplayer'
}
});
});
</script>
此位用于清除/选择复选框:
<script>
function uncheckAll() {
$("input[type='checkbox']:checked").prop("checked", false)
}
function checkAll() {
$("input[type='checkbox']").prop("checked", true)
}
</script>
需要注意的事项:在添加复选框之前,只需点击一个标题,播放器的行为就是继续在整个歌曲列表中前进,除非手动暂停。添加复选框后,播放器会加载所有选中的复选框。必须清除所有框,然后检查歌曲选择。单击第一个选定的标题然后启动播放器。播放器将完全检查所有已检查的歌曲,直到它到达最后一首歌的结尾;那么它将重新开始。如果您不希望它继续重复播放列表,则必须取消选中复选框。即使只检查了一首歌,它也会一遍又一遍地重复那首歌。要停止重复,您必须取消选中该框。 (可以通过单击提供的播放器链接来测试播放器的行为。您可以擦洗到歌曲的末尾,以避免必须完全坐下。)
当取消选中所有复选框时会出现此问题。 如果允许播放器一直播放到歌曲的结尾,页面将会冻结。只要正在播放歌曲,就可以暂停它,选中/取消选中复选框等。只有当没有选中复选框并且歌曲完全播放到结束时才会发生冻结。发生这种情况时,页面不再响应任何点击。人们可能只关闭页面标签(在大多数情况下)。
无论浏览器如何(在Firefox,Chrome,Safari,Opera中测试)都会发生这种情况。 Firefox确实提供了一个&#34;无响应的脚本&#34;提醒此信息:
脚本:http://yipcabbage.com/playerTest/js/jquery-1.6.1.min.js:16(为什么:16出现在该链接的末尾?当然,它会出现404错误。)
我缺乏调试JavaScript的技能。由于脚本错误指向jquery-1.6.1.min.js,因此我通读this page但不了解复选框的属性和属性。
我的问题是,由于播放器最初加载了所有选中的复选框,它是否会冻结,因为它最初设置为播放播放器中列出的所有歌曲,取消选中复选框会中断该功能(以便它&# 34;不知道该做什么&#34;当一首歌到达终点并且没有任何内容被检查时)?
答案 0 :(得分:2)
只有在没有检查复选框时才会出现问题。
来自/plugin/ttw-music-player.js中的这个函数:
function playlistNext() {
$cbs = $(".cb");
var index = current;
do {
index = (index + 1 < myPlaylist.length) ? index + 1 : 0;
} while (!$cbs.eq(index).prop("checked"));
playlistAdvance(index);
}
它进入一个无限循环,因为没有复选框符合$ cbs.eq(index).prop(&#34; checked&#34;)标准。
您可以考虑始终选中一个复选框。或者通过检查是否检查任何方框来修复该功能。