« 無印良品のサイトのHTMLが何気に構造化されていた。 | メイン | links for 2005-08-09 »

ウィンドウにflashをフィットさせる

ウィンドウがあるサイズ以下の場合はウィンドウにフィットした状態で表示し、それ以上のサイズの場合は既定のサイズで表示するという、変な条件があった場合の対処方法。
DOMを使えばもう少しきれいに書けると思うが、MacのIEという微妙なブラウザでも表示できるように昔ながらの方法を使った。

<script type="text/javascript"><!--
function writeFlash(){
// ウィンドウサイズの取得
if (document.all && document.getElementById && (document.compatMode=='CSS1Compat')) {
// IE6 標準モード
scrY = document.documentElement.clientHeight;
}else if(document.all){
// IE6 互換モード
scrY = document.body.clientHeight;
}else{
// それ以外
scrY = innerHeight;
}

// flashサイズの設定
var flashX = 本来のサイズ;
var flashY = 本来のサイズ;
if(scrY < flashY) {
flashX = Math.round(flashX*(scrY/flashY));
flashY = scrY;
}

// タグの書き出し
document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
width="' + flashX + '" height="' + flashY + '" id="index" align="middle">');
document.write('<param name="allowScriptAccess" value="sameDomain" />');
document.write('<param name="quality" value="high" />');
document.write('<param name="scale" value="exactfit" />');
document.write('<param name="bgcolor" value="#ffffff" />');
document.write('<param name="movie" value="hoge.swf" />');
document.write('<embed src="hoge.swf" quality="high" scale="exactfit" bgcolor="#ffffff"
width="' + flashX + '" height="' + flashY + '" name="index" align="middle" allowScriptAccess="sameDomain"
type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embded>');
document.write('</object>');
}
-->
</script>

headタグに上のスクリプトを書いて、bodyタグの中に下のスクリプトを書いて呼び出す。

<script><!--
writeFlash();
--!></script>

onresizeを使ってウィンドウのリサイズ時に再度ウィンドウサイズを取得してリロードすればもう少しユーザーに優しいページなるかも。

トラックバック

このエントリーのトラックバックURL:
http://www.s-cut.net/cgi/blog/mt-tb.cgi/2612

コメントを投稿

アーカイブ