2012-04-10 63 views
1

我在使用Sound Cloud自定義html5播放器(http://developers.soundcloud.com/docs/custom-player)時特別在Internet Explorer中(在版本7,8和9上測試)。Sound Cloud自定義播放器 - 「id屬性爲空」錯誤

似乎每當玩家被創建(現在這是動態通過JS)它會在「sc-player.js」文件(由聲音雲here提供)中遇到錯誤。

錯誤是「無法獲取值或屬性'id':object null or undefined」。這是攪亂代碼:行640字符9

// selecting tracks in the playlist 
    $('.sc-trackslist li').live('click', function(event) { 
var $track = $(this), 
    $player = $track.closest('.sc-player'), 
    trackId = $track.data('sc-track').id, 
    play = $player.is(':not(.playing)') || $track.is(':not(.active)'); 
if (play) { 
    onPlay($player, trackId); 
}else{ 
    onPause($player); 
} 
$track.addClass('active').siblings('li').removeClass('active'); 
$('.artworks li', $player).each(function(index) { 
    $(this).toggleClass('active', index === trackId); 
}); 
return false; 
}); 

我明白這是試圖找到生成的列表上道的ID,但是我已經隱藏在頁面上這個名單,所以真的不該」點擊事件甚至不應該觸發?我試圖一起刪除點擊事件,但似乎會導致播放器的其他一些問題。

只是想知道是否有其他人經歷過這個或知道如何解決它?

編輯 -

我手動附加「測試」數據的軌道。這似乎解決了第一個錯誤,但當然會帶來另一個錯誤。這一次同樣的錯誤被吐出來,這條線(在SC-player.js文件):

getPlayerData = function(node) { 
    return players[$(node).data('sc-player').id]; 
} 

這是代碼我用來調用播放器,軌道參數是鏈接到音樂曲目的SoundCloud頁面,#player是空的div其正在對上面創建:

function init_player(track,title) { 
    $('.open #player').scPlayer({ 
    links: [{url: track, title: title}], 
    beforeRender : function(tracksData) { 
     $scplayer = $(this); 
     $('.sc-trackslist li, .sc-trackslist li a').data({ id: track}); 
    } 
} 

當用戶想改變音樂的另一段,然後我有清空div容器的另一個功能,追加#播放器(因爲它被soundcloud播放器覆蓋),並重新運行上述功能。

我的問題是第二次init_player函數運行時,我得到的錯誤。

對不起,延遲響應!

+0

阿龍是正確的,錯誤是在這裏:'的TrackID = $ track.data('sc-track')。id'。你能確保這個元素有一個屬性'data-sc-track'嗎? – nickf 2012-04-11 09:43:27

回答

0

此行是錯誤的:

trackId = $track.data('sc-track').id, 

我幫不了你更多的則是因爲我需要的代碼的其餘部分...