ここnickf
にあるの例を使用し
て、IE7 で表示されるサイトの iframe の代わりを一緒にハックする要素を作成しました。これは、オフィスのすべてのコンピューターが IE8 にアップグレードされるまでの短期的な応急処置です。そのため、サーバー側のソリューションに煩わされることはありません。
目標は、サイト上のすべてのビデオを置き換えることなく、YouTube 埋め込みコードを古い埋め込みコードに変換することです。
var w = $('iframe').width(),
h = $('iframe').height(),
src = $('iframe').attr('src').split('/')[4];
$('iframe').after('<div class="iframediv"></div>');
$('<object></object>', {width: w, height: h})
.append($('<param />', {name: "movie", value: "http://www.youtube.com/v/" + src + "?hl=en_US&version=3"}))
.append($('<param />', {name: "allowFullScreen", value: "true"}))
.append($('<param />', {name: "allowscriptaccess", value: "always"}))
.append($('<embed />', {src: "http://www.youtube.com/v/" + src + "?hl=en_US&version=3", type: "application/x-shockwave-flash", width: w, height: h, allowscriptaccess: "always", allowfullscreen: "true"}))
.appendTo($('.iframediv'));
このコードの実際の例は、jsfiddleにあります。
私が問題を抱えているのは、作成された要素が IE7 で機能しないことです。作成コードが壊れているように見え、<object>
jQuery が動作しなくなりますが、Chrome では問題なく動作します。これを達成するために必要な IE7 固有の回避策があるかどうかわかりません。
編集:$('iframe').remove();
今のところ、テスト目的で意図的に行を省略しました。
編集:私の修正 -
if($('html').hasClass('ie7'))
{
var w = $('iframe').width(),
h = $('iframe').height(),
ytsrc = $('iframe').attr('src').split('/')[4];
$('iframe').after('<div class="iframediv"></div>');
$('<embed />', {width: w, height: h, src: "http://www.youtube.com/v/" + ytsrc + "?hl=en_US&version=3", type: "application/x-shockwave-flash", allowfullscreen: "true", allowscriptaccess: "always"}).appendTo($('.iframediv'));
$('iframe').remove();
}