我有一个页面,其中包含通过 jquery 加载的多个 Soundcloud 播放器。
首次加载页面时,播放器的顺序正确。如果选项卡已关闭并重新打开(使用 Chrome 的 ctrl+shift+t),或者如果您转到其他页面并按后退按钮,则播放器会重新加载到错误的位置。
我在https://github.com/iainx/sc-bug-test放了一个简单的演示项目。
对于 Chrome 和 Safari,您可以像这样复制它
- 加载页面和 3 名玩家的顺序应该是 Double Dagger、Jonathan Rado 和 CFCF
- 转到另一个页面
- 按返回按钮返回测试页面。有时玩家的顺序不再正确,但标题的顺序仍然正确,这表明 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 中的一些晦涩的错误?