JavaScriptを起動させる為に、
<a href="javascript:alert('びろ〜ん')">AAAAA</a>
|
と記述するのは正式な方法なのですが、
Internet Explorer のバージョン5.0以降で、この方法で記述したリンクをクリックすると
表示しているアニメGIFの動きが止まってしまいます。
これは、リンクをクリック=別のページを開く(新しい情報を読み込む)
それならば現在のページで行っている処理は止めてもいいだろう…という、
それはそれで間違ってはいないけれどそれだけにしか対応していない一種のバグです。
ま、個人的な解釈ですが…。
new Image()を使って画像データをキャッシュに読み込んで動的に画像変換しようとしても、
別ウィンドウを開いて外部ファイルを読み込んだりすると、
勝手にキャッシュがクリアされてしまい、スムーズに画像変換できず、
改めてサーバーから画像のDLを始めてみたり、
(こんなの無駄にサーバー負荷を増やしてるだけですよね…)
IE4 では問題無かったのにIE5.0以降でのJavaScript絡みの画像の扱いに関しては、
なにかと問題があります。
とはいえ、文句ばかり言ってても仕方ないので、なにか対策をしなければいけません。
テストページを開いて下さい。
はじめのリンクのソースは、
<a href="javascript:alert('びろ〜ん')">ここをクリック</a>
|
正式な記述法ですが、後のリンクのソースは、
<a href="" onClick="alert('びろ〜ん');return false">
ここをクリック</a>
|
こんな感じです。
| 使用オブジェクト | navigator |
| 使用プロパティ | appCodeName appName appVersion userAgent |
navigator オブジェクトを使うと、来訪者のブラウザ情報が取得できます。
基本的には、その情報を元に判断して異なる処理内容を指定してやれば可能です。
それぞれのプロパティで、どんな情報が取得できるかを自分のブラウザで試して下さい。
これを利用して色々な処理を工夫します。
いくつかの例を下に記載します。
<script>
/* ブラウザによって別のページへ転送 */
if (navigator.appName == "Microsoft Internet Explorer")
document.location = "msie.html";
if (navigator.appName == "Netscape")
document.location = "netscape.html";
/* ブラウザのバージョンが4以上なら実行 */
if (navigator.appVersion.substring(0,1) >= 4)
alert("いらっしゃいませ!");
else
alert("このページは残念ながらお使いのブラウザでは表示されません");
/* IEとNetscape6~とNetscape6未満でフォーム長を調整する */
if (navigator.userAgent.match(/msie|gecko/i))
document.write("<input type=text size=60>");
else document.write("<input type=text size=40>");
</script>
|