2016-07-20 13 views
0

私はthis test page上の音楽プレーヤーを持っています。のために必要な外部JavaScriptファイルは、headタグ内のページソースから見ることができます。彼らは音楽プレーヤーフリーズページ、すべてのブラウザは

(チェックボックスを配置するためのスクリプトは、このファイル内で発見された)

/js/jquery-1.6.1min.js

/js/myplaylist.js

/plugin/ttw-music-player.js ある私はまた、内部のJavaScriptの2つの部分が含まれています:

注意すべき

<script> 
function uncheckAll() { 
    $("input[type='checkbox']:checked").prop("checked", false) 
} 

function checkAll() { 
    $("input[type='checkbox']").prop("checked", true) 
} 
</script> 

何か:チェックボックスを選択/クリアするための

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

と、このビット前のチェックボックスを追加するには、一つは単にタイトルをクリックすると、プレイヤーの行動は、リスト全体を経て進行し続けることでした手動で一時停止しない限り、チェックボックスを追加すると、プレイヤーは選択したすべてのチェックボックスを読み込みます。すべてのボックスをクリアしてから、曲の選択を確認する必要があります。最初に選択したタイトルをクリックすると、プレーヤーが起動します。プレイヤーは、チェックされたすべての曲を、最後の曲の最後に到達するまで上手く進みます。それがやり直します。プレイリストの繰り返しを続けたくない場合は、チェックボックスをオフにする必要があります。チェックされている曲が1つだけでも、その曲を何度も何度も繰り返します。リピートを停止するには、チェックボックスをオフにする必要があります。

すべてのチェックボックスがオフの場合に問題が発生します。この問題は、提供されたプレーヤーのリンクをクリックして確認することができます。プレイヤーが曲の最後まで再生できる場合、ページはフリーズします。曲が再生されている間は、一時停止、チェックボックスのオン/オフなどがあります。ボックスがチェックされておらず、フリーズが終了するまで曲が完全に再生されている場合のみです。この場合、ページはクリックに反応しなくなります。ページタブを閉じることができます(ほとんどの場合)。

これは関係なく、(Firefoxの、クロム、サファリ、オペラでテスト)ブラウザの起こります。

スクリプト:http://yipcabbage.com/playerTest/js/jquery-1.6.1.min.js:16 Firefoxは、この情報を「応答のないスクリプト」の警告を与えない(なぜ?:16そのリンクの最後に現れるもちろん、それは404エラーになります)

を私が欠けていますJavaScriptをデバッグするスキルスクリプトエラーがjquery-1.6.1.min.jsを指しているので、私はthis pageを読んだが、チェックボックスの属性とプロパティは理解していない。

私の質問は、最初にチェックされたすべてのボックスをロードするので、プレイヤーにリストされているすべての曲を再生するように設定されていたためにフリーズしています。チェックボックスをオフにすると、曲が終わりに達して何もチェックされないときに何をすべきかわからない)?

答えて

2

すべてにチェックなしチェックボックスが存在しない場合にのみ問題があります。

は、この関数内/プラグイン/ TTW-音楽プレーヤーから来ます。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(インデックス).prop( "チェックする")の基準に一致しないので、それが無限ループに入ります。

1つのチェックボックスを常にオンのままにしておくことをお勧めします。また、ボックスがチェックされているかどうかをチェックすることでその機能を修正することもできます。

+0

@Alexander Mitsevさらに詳しく説明してもらえますか?「ボックスがチェックされているかどうかを確認してその機能を修正する」 –

+0

はい、あなたは '} while(!$ cbs.eq(index).prop(" checked "));'} 'while(!$ cbs.eq(index).prop(" checked ")&&;インデックス!==現在); '。これで解決するはずです。他の曲がチェックされていない場合は、現在の曲をもう一度再生します...これは最も簡単な修正です。 –

+0

または、これを関数の先頭に追加します: 'if($(" .cb:checked ")。length === 0){return; } ' –

関連する問題