ステータス領域にメッセージといっても、
単に window.status に文字列を設定するだけが目的の項目です。
普通なら、これは Tips にはなりません。
然し、NN4.06/4.5PRx に関しては日本語が文字化けする問題があります。
これは、このバージョンから ECMA-262 対応のために内部コードが
いわゆる UNICODE( ユニコードと読みます。ウニではありません f(^^; )
になったために発生した問題らしいのです。
もう少し突っ込んで言うと、内部コードが UNICODE になっただけなら問題が発生しないが、 HTML( FORMを含む ) や JavaScript で扱う文字列は従来通りらしいので、 普通に文字列を window.status に設定すると文字化けを起こします。 また、同時に ECMA-262 では escape 関数も UNICODEエンコード になっているのですが、 現在のところ従来通り URLエンコード のため、この手法も使用できません。
ってことで、以下に挙げる関数は日本語の文字列を NN4.06/4.5PR1/4.5PR2 でも ステータス領域に表示するための関数です( もちろん、他のバージョンでは従来通りです )。
<script language="JavaScript"><!-- // ステータス領域表示に問題があるかどうかのチェック関数 function isWindowStatusBug(){ if(navigator.appName!='Netscape') return false; var apv=navigator.appVersion; var mnv=parseFloat(apv); if(mnv>4.05 && mnv<4.08) return true; return (mnv==4.5 && (apv.charAt(3)=='b' || apv.indexOf('ja')==-1)); } // ステータス領域に文字列を設定する関数 function setWindowStatus(s){ var msg=''; // 設定する文字列 if(isWindowStatusBug()){ var sps=escape(s).split('%'); for(var i=0; i<sps.length;i++){ // status には %HH ではなく \u00HH を設定する if(i!=0) msg+='\\u00'; msg+=sps[i]; } msg=eval('"'+msg+'"'); } else msg=s; window.status=msg; return true; } // --></script> : <a href="xxxx.htm" onMouseOver="return setWindowStatus('トップページへ'); onMouseOut ="return setWindowStatus('');">リンク</a>
この文字の部分は必要に応じて修正します。
通常は window.status = 'xxxx'; としていた部分を setWindowStatus('xxxx'); と
書き替えれば良いだけです。 f(^^;
使用例
ここにマウスを持ってくると ステータス領域に文字が表示され、離れると消えます。
注意事項