フラッシュがインストールされていないブラウザに、フラッシュの代わりの画像を表示するTips。
スクリプトで強制的にチェックできるが、それはスクリプトOFFならどうするんだ?ということになる。
まずは、ふつうにスクリプトを使うときは、Adobe(macromedia)のサイトでチェックスクリプトが配布されている。
Flash PlayerDetection Kit の使い方
このスクリプトを使えば問題解決なんだけど。
実はIEなら、Flashのチェックをしなくても、代わりの画像に差し替え可能だ。
Flashチェックスクリプト使うより、Object の onErrorでイメージに置換するのがスマートじゃないかなと
<div ="flashcontents"><Object classid="****" OnError="swapImg()" > ....</div> <script type="text/javascript"> function swapImg(){ document.getElementById("flashcontents").innerHTML = "<img src="**" />"; } </script>
これなら、Flashのチェックすら必要ない。
でもFirefoxで動かない。ObjectにonErrorがないんだ。DOMインスペクタで見るとOnErrorは登録されているのだが、IEのようにFlash未インストールをErrorにしてくれない。
Firefoxの不備だと思うのだが仕方がない。Firefoxのバグかな。DOMインスペクタにはあるんだから。
でもってFlashをObjectタグで使うと動作がどうも変だ。
<embed src="..."><noembed><img src="..."></noembed>
も期待通り動作しない.まったくFirefoxは。
そこで、HTMLを見直してみる。HTMLのみならScriptオフの時にも対応可能だろう。
なので、それを使ってみる。
<object data="xx.swf" type="image/png" height=100 width=100 onError="swapImg()"> <object data="xx.gif" type="image/gif" height=100 width=100> </object> </object>
フラッシュがないときは正しく動作する。
が、IEではFlashがある時に、*.swf と *.gif の両方が表示されてしまった。
痛し痒しだ。
Firefoxはやっぱまだ枯れた技術じゃないんだなと改めて実感した。
JavaScriptのOFFを考慮したいので、Img の altのように Object や の代換えがHTMLのみで出来るよう、ブラウザに実装して欲しいなと思った。
ふと思った。EmEditorのマクロって WSHが動くわけだから、当然ActiveXつかえるんですよね。
試してみた
/** * 簡略化してあるが、XmlHttp リクエスト * Emeditor のマクロ版。 */ function XMLHttpRequest(){ return new ActiveXObject("Microsoft.XMLHTTP"); } function request(){ var req = new XMLHttpRequest(); req.open("GET", "http://www.yahoo.co.jp/", false); req.onreadystatechange = function() { if (req.readyState==4){ request.response = req.responseText; } } req.send(null); } request(); document.write(request.response);
マクロとして実行してみた。ばっちり動く。ちゃんとカーソル行にYahoo の生HTMLが表示される。
これは意外と使えるんじゃないか。
ってことで、他のActiveXオブジェクトについても試してみた。SleipnirAPIだ。