Flashオブジェクトのz-index問題
現象
youtubeを以下のようにロードできる。
<iframe title="YouTube video player" width="450" height="368" src="http://www.youtube.com/embed/動画ID" frameborder="0" allowfullscreen></iframe>
こうした場合、読込んだFlashがz-indexを無視して一番上に表示される。
z-inex の有効化
Flash要素にz-indexを有効化させるには一般的に次のように指定する。
<object> <param name="wmode" value="transparent"> <embed src="…" wmode="transparent" /> </object>
iframe へのアクセス
youtubeの動画にz-indexを指定するため、まずはiframe内の要素へのアクセスを試みる。
iframeへのアクセスはjQueryの場合、以下のようにする。
// iframe var trgt = $('iframeを要素に持つ親要素').find('iframe:first'); // 読込みを待ってiframe内要素にアクセス _trgt.load(function(){ // 要素取得 // contents() でiframe内へ入ることが出来る $(this).contents().find('#対象要素').html('foo'); })
アクセスできません
上記iframeアクセスが出来るのは、同一ドメインのiframeのみ。
youtubeの動画を読込んだiframeにアクセスしようとすると、
permission denied for ******
としてアクセスすることが出来ない。
これはもう、どうしようもないので一時的にiframeを非表示することにした。
が、display で block させた際にもまたパーミッションのエラーが出力された。なんだい。もう。
苦肉の策でpositionをマイナス方向へ一気に飛ばして見えなくさせるようにした。
何か良い方法が無いものか。。。
4/15 追記
atsushi_h さんからの情報で、URLパラメタの指定によりz-indexが効くとの事でした。
?wmode=transparent
このパラメタをiframeのURLに追加するだけでよかったなんて。。。(atsushi_hさんありがとうございます)
調べてみたところ、色々なパラメタがあるようでした。
-
- start : 再生開始位置(秒)
- hd=1 : HD再生
- autoplay=1 : 自動再生
- loop=1 : ループ再生
- rel=0 : 関連動画を表示しない
- disablekb : キーボード操作(1:有効 0:無効)
youtubeが思いのほか素敵なインターフェースを持っていた事を知らなかった自分が情けないですね。
いやーyoutubeっていいものですねー