0

我有一个页面,其中包含通过 jquery 加载的多个 Soundcloud 播放器。

首次加载页面时,播放器的顺序正确。如果选项卡已关闭并重新打开(使用 Chrome 的 ctrl+shift+t),或者如果您转到其他页面并按后退按钮,则播放器会重新加载到错误的位置。

我在https://github.com/iainx/sc-bug-test放了一个简单的演示项目。

对于 Chrome 和 Safari,您可以像这样复制它

  1. 加载页面和 3 名玩家的顺序应该是 Double Dagger、Jonathan Rado 和 CFCF
  2. 转到另一个页面
  3. 按返回按钮返回测试页面。有时玩家的顺序不再正确,但标题的顺序仍然正确,这表明 jquery 正在选择正确的文章。

有问题的代码是

$(function() {
    tracks = ["http://soundcloud.com/thrilljockey/double-dagger-heretics-hymn", "http://soundcloud.com/woodsist/jonathan-rado-faces", "http://soundcloud.com/cfcf/camera"];

    function updateTrack(trackUrl, playerNumber) {

        $.getJSON('http://soundcloud.com/oembed?callback=?',
                  {format: 'js', url: trackUrl, iframe:'true'},
                  function(data) {
                      var articleDiv = $('#player' + playerNumber);
                      var playerDiv = articleDiv.find('.player');

                      var position = playerDiv.position();
                      playerDiv.html(data['html']);

                      var titleDiv = articleDiv.find("header"); 
                      titleDiv.text(data['title']);
                  });
    }

    for (var i = 1; i < 4; i++) {
        updateTrack(tracks[i - 1], i);
    }
});

它在 Firefox(在 Linux 和 OSX 上)中运行良好,但在 Chrome(在 Linux 和 OSX 上)、Safari(在 OSX 上)和 Epiphany(Linux 上的另一个 WebKit 浏览器)中运行良好。

我的代码有什么愚蠢的地方吗,或者这是否是 Soundcloud 甚至 Webkit 中的一些晦涩的错误?

4

0 回答 0