このコントロールをアクティブ化して使用するにはクリックして下さい!

前回(あなたのサイトのFlashが動かなくなる!)でとりあげたお話の続きです。

前回は引用だけして抜本的な解決策は当サイトでは掲載しませんでした。
検証する必要に迫られたので色々見て解決策

function showFlash(file,width,height){
	document.write('<object data="'+file+'" type="application/x-shockwave-flash" height="'+height+'" width="'+width+'">');
	document.write('<param name="movie" value="'+file+'">');
	document.write('</object>');
}

以上のように記述した関数をjsファイルなどに記述し事前に呼び込んでおきます。

flashを表示したいところに

<script type="text/javascript">
	showFlash("フラッシュファイル名","","高さ");
</script>
<noscript>
	<object data="フラッシュファイル名" type="application/x-shockwave-flash" height="高さ" width="">;
	<param name="movie" value="フラッシュファイル名">
	</object>;
</noscript>

と記述します。

これは

  1. swfファイルをアクティブにする為、javascriptでobject要素を書きだします。
  2. javascript OFFのユーザーを考慮する為noscript要素を記述。
  3. XHTMLを使用する場合はembed要素でなくてobject要素を使用します。

てなのに考慮したらこんな感じになりました。

また、以下のような凡庸型のライブラリーもあるようです。

(function() {
	var all = document.all;
	if(all) {
		var lst = [];
		var len = all.length;
		for(var i = 0; i < len; i++) {
			var obj = all[i];
			if(obj && obj.nodeName) {
				switch(obj.nodeName.toLowerCase()) {
					case "object":
					case "applet":
					case "embed":
						lst[lst.length] = obj;
					break;
					default:
				}
			}
		}
		for(var i = 0; i < lst.length; i++) {
			lst[i].outerHTML += "";
		}
		lst = null;
	}
})();

これを記述した外部jsファイルを読み込むだけですべてのswfファイルがアクティブになります。

関連エントリー

【SEO対策TIPS】object要素の最適化
FlashのボタンアクションでMCを制御する方法
Macromedia Studio 8が正式発表
Flash 8がでるらしい!

スポンサードリンク

«del.icio.us登録用のブックマークレットをblogなどに設置する | メイン | del.icio.usの内容をgoogleパーソナライズに表示する方法»