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 のあいまいなバグですか?