これはまったく切り詰められています。JQuery/Youtube API - シミュレートされたDOMでの再帰エラーが多すぎます。
私はYoutube JS APIを使用して、曲がいつ終了したかを判断しています。終了したら、次の曲を演奏する方法を呼びたい。この方法は、このフォームで正しく動作
window.statechange = (newstate) ->
debug = true
if debug then console.log 'Player State Change: ' + newState
switch newState
when 0 #song ended
if debug then console.log 'Song Ended'
when 1 #song is playing
if debug then console.log 'Song Playing'
#change the title of the page
document.title = $('#currentSongTitle').html() + ' by ' +
$('#currentSongArtist').html()
when 2 #song is paused
if debug then console.log 'Song Paused'
when 3 #song is buffering
if debug then console.log 'Song Loading'
:ここ
は私のイベントリスナーメソッド(のCoffeeScript)です。ここで
when 0 #song ended
if debug then console.log 'Song Ended'
$('.next-song').click()
:曲が終わると、私は次の曲の機能をトリガーするシミュレートされたクリックを追加するコードを変更すると、放火犯のコンソールには、それは私にtoo much recursion
エラーやクラッシュを与える。しかし、Song Ended
を表示します次の曲をクリックしたときのコードです。
これはそれです。クラッシュする前に、コンソールに「次の曲がクリックされました」と表示されますが、クラッシュして再帰エラーが多すぎます。どのようにして1行で再帰が起こるのでしょうか?
次の方法はエラーなしで動作するということがさらに混乱します。
$(document).on 'click', '#debug-next-song', ->
$('.next-song').click()
EDIT:私は、シミュレートされたクリックの動作を確認することを目的とそれを作成した見つけたすべてがChromeで正常に動作しますが、完全にFirefoxでクラッシュします。最初のエラーはhttp://t3k.no/betaで確認できます。現在の曲の右側にある「次へ」をクリックすると、正常に動作します。しかし、画面の一番下にある曲を再生して終了するまで待つと、コード$('.next-song').click()
が呼び出され、Firefoxがクラッシュします。
クリックはおそらく別の 'window.statechange'呼び出しを引き起こしています。あなたはどこでも遊ぶ事例がありますか? –
これは私が最初に思ったものですが、それがその方法を引き起こすとは私には意味がありません。そうであれば、コンソールは 'if debug then console.log 'を記録する必要があります。Player State Change:状態が変化していたら' + newState'。 私のサイトに壊れたバージョンをアップロードしました:http://t3k.no/beta(曲が終わったときに私のfirefoxがクラッシュすることに注意してください) – CHawk
even weirder:私は自分のサイトにアップロードしました。 ChromeはクラッシュしますがFirefoxをクラッシュします... – CHawk