相當難住了這一點。JQuery的/的Youtube API - 在模擬DOM太多的遞歸調用錯誤點擊
我使用YouTube JS API,以確定一首歌曲已經結束。當它結束時,我想調用播放下一首歌曲的方法。
這裏是我的事件監聽器方法(CoffeeScript的):
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'
的方法正常工作以這種形式。當歌曲結束,Firebug的控制檯顯示Song Ended
然而,當我修改代碼以添加一個模擬點擊,將觸發下一首歌曲的功能,它給了我一個too much recursion
錯誤和崩潰:
when 0 #song ended
if debug then console.log 'Song Ended'
$('.next-song').click()
這裏是下一首歌點擊時的代碼:
就是這樣。在它崩潰之前,控制檯會說'下一首歌曲被點擊',但之後它會崩潰,並給出太多的遞歸錯誤。一條線如何導致任何遞歸?
更加混亂的是,以下方法適用於沒有錯誤。
$(document).on 'click', '#debug-next-song', ->
$('.next-song').click()
編輯:我與確保模擬點擊作品的目的,創造了它找出了一切工作正常在Chrome,但在Firefox完全崩潰。你可以在(http://t3k.no/beta)看到錯誤。在當前歌曲的右側,單擊「下一步」可以正常工作。但是,如果你開始播放歌曲在屏幕的底部,等待它結束,代碼$('.next-song').click()
被稱爲和崩潰的Firefox。
點擊可能觸發另一個'window.statechange'調用。你有沒有在任何地方玩的例子? – 2012-02-12 22:37:38
這就是我一開始以爲過,但它沒有任何意義,我認爲這會觸發該方法。如果是,控制檯應該記錄'if debug then console.log'Player State Change:'+ newState'如果狀態發生變化。 我上傳的破碎版本到我的網站在這裏:http://t3k.no/beta(注意,它崩潰我的Firefox當歌曲結束) – CHawk 2012-02-13 02:45:10
更加古怪:現在,我上傳到我的網站,我發現它在Chrome但崩潰的Firefox ... – CHawk 2012-02-13 02:47:31