Sound Cloud自定义播放器 - “id属性为null”错误

时间:2012-04-10 14:25:38

标签: javascript html5 soundcloud

我在使用Sound Cloud自定义html5播放器(http://developers.soundcloud.com/docs/custom-player)时遇到了一些问题,特别是在Internet Explorer上(在版本7,8和9上测试过)。

似乎无论何时创建播放器(现在这是通过JS动态地),它都会在“sc-player.js”文件(由声音云here提供)中运行错误。

错误是“无法获取值或属性'id':object null或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];
}

这是代码我用来调用播放器,track参数是音乐曲目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,将#player附加到它(因为它被soundcloud播放器覆盖),并重新运行上述功能。 / p>

我的问题是第二次运行init_player函数时,我收到错误。

对不起延迟回复!

1 个答案:

答案 0 :(得分:0)

这一行错了:

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

我无法帮助你,因为我需要剩下的代码......