我有一个页面,通过jquery加载了多个Soundcloud播放器。
首次加载页面时,玩家的顺序正确。如果选项卡已关闭并重新打开(使用Chrome的ctrl + shift + t),或者如果您转到其他页面并按后退按钮,则会在不正确的位置重新加载播放器。
我在https://github.com/iainx/sc-bug-test放了一个简单的示范项目。
对于Chrome和Safari,您可以像这样重现它
有问题的代码是
$(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中的一些晦涩的错误?