IE7になって、フラッシュ・コンテンツは、一度画面をクリックして「activate」させてから操作するようになりました。
私はフラッシュカレンダーを使っているので、この仕様は不便に感じてしまいます。
ということで、trick7.com blogを参考に、ジャバスクリプト化してみました。
フラッシュカレンダー(標準型 n_calendar200.swf )は導入済みとして話を進めます。
先ず、trick7.com blogから、SWFObject 1.4 をダウンロードします。その中から swfobject.js を例えばサイトのメインページと同じディレクトリにアップロードします。
ここでは、メインページと同じディレクトリにアップロードしたものとして解説します。
次にソースの編集です。
もともとのソースは次のようになっていると思います。
<OBJECT classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab
#version='6,0,0,0' WIDTH='130' HEIGHT='130' id='calendar' ALIGN=''> <PARAM NAME=movie VALUE='http://自分の環境/n_calendar200.swf?xmlURL=http://自分の環境/#####.xml&katachi=1&monthMoveColor=月移動矢印の色&entryDayColor=エントリーのある日の色&todayColor=今日の枠の色&title_d=1'> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#背景色> <EMBED src='http://自分の環境/n_calendar200.swf?xmlURL=http://自分の環境&katachi=1&monthMoveColor=月移動矢印の色&entryDayColor=エントリーのある日の色&todayColor=今日の枠の色&title_d=1' quality=high bgcolor=#背景色 WIDTH='130' HEIGHT='130' NAME='calendar' ALIGN='' TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/go/getflashplayer'></EMBED></OBJECT>
の赤字の部分をソースに記入していきます。
<div id="calendar">
ここに代替テキストを挿入
例えば、一般的なカレンダーとか
実際にswfが表示されるとこのテキストは表示されません
</div>
<script type="text/javascript">
var so = new SWFObject("http://自分の環境/n_calendar200.swf", "calendar", "130", "130", "6", "#背景色")
so.addParam("quality", "high");
so.addVariable("xmlURL", "http://自分の環境/#####.xml&katachi=1&monthMoveColor=月移動矢印の色&entryDayColor=エントリーのある日の色&todayColor=今日の枠の色&title_d=1");
so.write("calendar");
</script>
とこのようなソースになります。
次に、テンプレートを新規作成します。
テンプレートの名前 例えば、フラッシュカレンダー
出力ファイル名 calendar.txt
テンプレートの内容は、 上記のソース
として、保存・再構築します。
後は、カレンダーを貼り付けたいページを開いて、<head>と</head>の間に
<script type="text/javascript" src="<$MTBlogURL$>swfobject.js"></script>
カレンダーを貼り付けたい場所に
<!-- フラッシュカレンダー -->
<?php readfile("<$MTBlogURL$>calendar.txt");?>
と記入して完了です。