YouTubeの埋め込みタグをXHTML1.0 strictでvalidにする。
2011年04月11日 19時00分 月齢:7.9[弓張月(上弦)] 潮汐:小潮
(最終更新日:2019年09月04日)
14年前に投稿 | ウェブ・IT関係 | コメントはありません
4分ぐらいで読めます。
この記事は情報が古い場合があります。
最近立て続けにYouTubeの動画を、YouTubeの埋め込みコードをそのまま使って貼り付けていたのですが、Another HTML-lintで確認してみると結構悲惨な点数でした。XHTML1.0 strictで記述している当サイトでembed要素を使っているのが減点の大きな原因ですが、IE対策のために使われている感じです。
そのままではなんとも悔しいので、100点満点になるソースを検討してみました。
まずは条件分岐でIE以外とIEを振り分ける方法。参考にしたのはphp & javascript roomと身延の風より。それをアレンジして次のようにまとめました。
<p>
<object data="http://www.youtube-nocookie.com/v/l-SP2MUo13w?fs=1&hl=ja_JP&rel=0" width="640" height="390">
<param name="autostart" value="false" />
<param name="allowFullScreen" value="true" />
<param name="allowscriptaccess" value="always" />‌</object>
</p>
<!--[if IE]>
<p>
<embed src="http://www.youtube-nocookie.com/v/l-SP2MUo13w?fs=1&hl=ja_JP&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="390" />
</p>
<![endif]-->
この中で、php & javascript roomで紹介されている<!--[if !IE]> <-->でIE以外に適用する方法は文法的にペケなので使わずに、全ブラウザに適用させてからIE用の条件を当てるようにしています。このときIEはobject要素の等価内容のテキストを読むので、zero width non-joinerの数値実体参照「‌」を入れておきました。
どうも複雑だけどこれでいいかな、と思っていたのですが、object要素だけでもいけるみたい。参考にしたのは小粋空間など。「object要素にtype属性を追加し、属性値にembed要素のtype属性値(application/x-shockwave-flash)を記述」するのがポイントのようです。
<p>
<object data="http://www.youtube-nocookie.com/v/l-SP2MUo13w?fs=1&hl=ja_JP&rel=0" width="640" height="390" type="application/x-shockwave-flash">
<param name="movie" value="http://www.youtube-nocookie.com/v/l-SP2MUo13w?fs=1&hl=ja_JP&rel=0" />
<param name="autostart" value="false" />
<param name="allowFullScreen" value="true" />
<param name="allowscriptaccess" value="always" />等価ほげほげ</object>
</p>
という感じです。IE6sp1とFirefox3.6.16で確認しただけですが、表示・再生ともにOK! Another HTML-lintでも100点でしたー。
…調べたら、こんな方法でもvalidにできるとか。「YouTube Perfect Embed」YouTubeの貼り付け用コードをXHTML Validでサムネイル付きにするブックマークレット いろいろあるなぁ。
古い記事・新しい記事
- 古い記事 [2011年04月06日]
- ← KENWOOD U565SDを購入しました。
- 新しい記事 [2011年06月03日]
- → 6月8日の「World IPv6 Day」と、IPv6接続性をテスト。
他にも「ウェブ・IT関係」カテゴリの記事はいかがですか。
- FirefoxでYouTubeの動画がカクカクしたり止まったりするときの対処法。
- nexus7(2012)にAndroid5を入れると重くなった。
- VPN環境でドメイン参加
- iPadの使い道がなくて余ってる。困ってる。
- 「レジや金庫内のお金を数えるための計算フォーム」をPHP8に対応させてみた。
- レジや金庫内のお金を数えるための計算フォーム・改。
- Windows10 64bitでEPSON GT-8300UFを使う。
- OutlookExpressに無料で電子署名をつけよう
- レジや金庫内のお金を数えるための計算フォーム。
- Canon LBP-1110による印刷でCAPTがトロイの木馬として検出される。