onunLoadについて

[上に] [前に] [次に]
eri kagura 1999/08/04(水) 06:24:55
とほほさんの解説によるとbody onunloadはie3以上対応とありますが、macだとie3/4.01/4.5ともに以下のスクリプトを無視(エラーもでません)します。(nnは正常でした)
<script language="javascript">
<!--
function forold() {
if (navigator.appVersion.charAt(0) < 4)  {
top.location.href = 'index_for3.html';
}
}
//-->
</script>
<body onunLoad="forold()">
これはwinお持ちの方は反応しますか?
教えてください。

TAKI 1999/08/04(水) 10:18:26
IE4.01で反応するように、forold()の中を
if (navigator.appVersion.charAt(0) == 4) {
alert()
}
としてテストしてみたところ、
Win95+IE4.01ではちゃんと反応してます。
onunLoadはonUnloadと書くのが正しいと思うのですけれど
<body onUnload="forold()">としても駄目ですか?

>macだとie3/4.01/4.5ともに
上のコードは「ブラウザのバージョンが4未満だったら」
ということなので、IE4.01/4.5では
何も起こらないのが正しいのですよね?
ちなみにMac版IEは3.01からJavaScript対応で
3.0 ではサポートされていないそうです。

Tmb 1999/08/04(水) 11:20:40
問題点をきりわけるために

function forold() {
alert('onUnload..OK');
if (navigator.appVersion.charAt(0) < 4) {
alert('if..OK');
top.location.href = 'index_for3.html';
}
}
という形で一度確認されることをおすすめします。

それからonUnloadの表記については,この場合はHTMLのタグの属性なので,
大文字小文字は関係ないと思います。
#JavaScript内のイベントの場合はもちろん関係しますけど。

あとひとつ気になったのは,onUnload時に飛び先を指定しても,そのonUnload
が発生したのが<A href>などのページ移動による場合,onUnloadで指定された
処理の実行後に,結局ページの移動が行われる(移動をキャンセルできない)
ブラウザの方が多かったと思います。

eri kagura 1999/08/04(水) 16:16:46
TAKIさま
> Win95+IE4.01ではちゃんと反応してます。

 >macだとie3/4.01/4.5ともに

> 上のコードは「ブラウザのバージョンが4未満だったら」
> ということなので、IE4.01/4.5では
> 何も起こらないのが正しいのですよね?

稚拙な説明しかできておらずに申し訳ありません。。
IE4.01/4.5 およびNN4.5 でテストした時は charAt(0) < 5) としまして、
その3つのブラウザすべて正常に反応しましたので、
charAt(0) < 4 とした時にIE3 が無視するのはなぜ?。。と思い、
windouw環境のかたに反応をお聞きしたかったのです。

> ちなみにMac版IEは3.01からJavaScript対応で
> 3.0 ではサポートされていないそうです。

知りませんでした。ありがとうございます。
それで私のIEのバージョンを見たら3.01となっていました。
でもスクリプトに反応しません。。あきらめもーど。。。です

tmbさま
ご指導ありがとうございました。
上記書きましたような状況でして、alert表示も私のIE3.01は無視しています(IE4.01/4.5,NN4.5は alert表示しました)。

どうか最後に、win95のIE『3』が body onUnload に反応するかしないかだけでいいですので、どなたか教えてください

WIN95+IE3.02 1999/08/05(木) 21:10:18
WIN95 + IE3.02 にて

>win95のIE『3』が body onUnload に反応するかしないかだけ
これだけの答えならば、「反応する」です。

Tmbさんの指摘通りに問題の切り分けした方がいいでしょう。

上記の環境で以下の様にしてみました。
<script language="javascript">
<!--
function forold() {
alert('[1]');
if (navigator.appVersion.charAt(0) < 4) {
alert('[2]');
location.href = 'index_for3.html';
alert('[3]');
}else{alert('[4]')}
}
//-->
</script>
<body onunLoad="forold()">

結果は、[1],[2],[3]が表示されました。
[1]は、OnUnloadが有効、[2]はバージョン値が4以下、[3]は
location.href が有効になっていないということでしょう。
#ホントは有効のはずなんだけど何故なんだろう?

[上に] [前に] [次に]