■ Webサイト側のコントロールのアクティブ化

IE7β2にした事で、ちょっとサイト側でコントロールのアクティブ化をやってみることにしました。
Microsoftなどで公開されている情報では、
ActiveX コントロールのアクティブ化
の中にあるように、外部からの対話型コントロールの読み込みが必要なようです。
外部ファイルなら良いのかとちょっとPHPでやってみましたがあっさり、ダメでした(笑)
ということでMicrosoftで言われてるように、Javascriptでファイルを読み込むことに。
このブログではカレンダーとワールドカップまでのカウントダウンのFlashのActiveXコントロールがありますが、ここではカレンダーだけやることにしました。
ここで使用しているカレンダーは、Kinarie&MayさんのところのMT(MovableType)用カレンダーです。
貼り付けるコードまで出してくれるので、非常に簡単にFlashカレンダーが設置できます。
ブログに貼り付けるコードは
<OBJECT classid='clsid:D27CDB6E~><PARAM~>
<EMBED src='http://~'></EMBED></OBJECT>
のようになっていますが、これを外部ファイルにする準備をします。
MT上でも構いませんがJavascriptファイルを作成します。ここではcal.jsと言うファイル名にしました。
cal.jsの中は関数名を書きます。ここではRunCalと言う関数名にしました。
function RunCal()
{
document.write('<OBJECT ~>\n');
document.write('<PARAM ~>\n');
・・・
document.write('<EMBED ~>>\n');
document.write('</EMBED>\n');
document.write('</OBJECT>\n');
}
自分が行ったのは、元のコード
<OBJECT ~><PARAM~>
<EMBED src='http://~'></EMBED></OBJECT>
のコードの < と >を1行としてdocument.writeの1行に対応するようにしました。
(1行全部をdocument.writeの後に付けても良いかもしれないですが、見にくくなるのでやってないです。)
このcal.jsファイルを作るときの注意点は、元のコードを貼り付ける時は、' (シングルクォーテーション)であるところを "(ダブルクォーテーション)に変更する点です。
document.writeが (' と ') に区切られてるので、ここをミスするとカレンダーが表示できなくなります。
cal.jsをMovableTypeのテンプレートページから作成している場合は、そのまま再構築で。エディタで作成している方は、保存後にFTPクライアントツールでサーバにアップロードすればとりあえず外部ファイル化の部分は完了です。
次にできたcal.jsファイルを読み込ませる方法ですが、元々貼り付けたページの
<head>~</head>の間に1行追加します。
<script src="[path]cal.js" type="text/javascript"></script>
[path]はこのcal.jsファイルを置いている場所です。
そして、元々ページの中でカレンダーを表示するためのコードの部分は削除せずに
<noscript>~</noscript>で囲みます。
<noscript>
<OBJECT classid='clsid:D27CDB6E~><PARAM~>
<EMBED src='http://~'></EMBED></OBJECT>
</noscript>
その後、その<noscript>の前にcal.jsファイルの中で作った関数(ここではRunCal)を実行させるようにします。
<script type="text/javascript">RunCal();</script>
以上で、とりあえずアクティブ化は、できるようになります。
ちなみに、このブログでは、一部だけ行っています。(2006年5月9日現在)
そのページはセレクト - パソコンのページで、ここだけはクリックしなくてもアクティブ化してます。(IE7βで確認済)
また以前もエントリしましたが、下記はアドビシステムズのサイトの内容のリンクです。
アクティブコンテンツのアップデートに関する記事
ここでは複数の埋め込みコンテンツがある場合 なども例として載っています。

このブログで使わせてもらっているMovableType用標準型フラッシュカレンダーが2.00にバージョンアップされました。








