blip.fmのplaylistで一番下までスクロールしないと曲が再生されない原因を解明した
blip.fmのplaylistがバグっているので原因を探ってみた - Cherenkovの暗中模索にっきの続きのエントリー。
これはWindowsプラットホームのFirefox限定の問題らしい。
Firefoxは表示領域外にあるflashをレンダリングしない。新しくタブを開いたときや、ページをスクロールしてflashが貼られているエリアにきた段階で初めてレンダリングされる。(例えばyoutube動画がembedされたページ)
ということは、playlistのswfは一番下にあることが原因で、一番下までスクロールしないとコントローラが表示されないのではないのか。ということを思いついた。
確認してみる
firebugを使ってswfが埋め込まれているobjectタグを探すだけ。DOMでoffsetTopをよくみる。
http://blip.fm/profile/cherenkov/playlistで以下のスクリプトを実行してみる。
var left = document.getElementById('blipPlayer').offsetLeft; var top = document.getElementById('blipPlayer').offsetTop; //swfが埋め込まれている座標 (X,Y) console.log(left+','+top); //0,12482 と出力された。
おお!やっぱりめちゃくちゃ下に位置している!次は正常に表示されるトップページ(http://blip.fm/home)と比較してみた。以下の表にまとめた。
PAGE | swfの座標(x,y) |
top | 598,80 |
playlist | 0,12482 |
ぬおお!swfの位置が原因ということで間違いない!
試しにFirefoxの横幅をせまくしてからトップページを開いてみるとコントローラが表示されないことを再現できる。
原因まとめ
Firefoxはobjectのwmodeにtransparentが指定されている場合、表示領域外にあるflashをレンダリングしない。
よって、blip.fmのplaylistはswfが一番下に埋め込まれていたのでswfがレンダリングされず、コントローラはずっときっかけ待ちだった。
これはwindows環境のfirefoxに限られた現象でそのうち対応すると返答がきた。
マックだとどこで挙動がかわるんだろう。wmode:transparentのところ?報告求む。