Size Setter

全面改訂 (99/04/28)

< 謝辞 >

改訂に当たり、茶具様より多大の情報を戴きました。


<FORM>
<input type="text" size=30
	value="ここはどんな表示になってますか">
</FORM>

いくつかのブラウザで比較してみました。

Win3.1/Netscape 1.1
Win3.1/Netscape 2.02
Win3.1/Netscape 3.01
Win3.1/MSIEeplorer 3.02a
Win95/MSIEeplorer 2.0
Win95/MSIEeplorer 3.02
Win95/Netscape 3.01
Win95/MSIEeplorer 4.01
Win95/Netscape 4.01
Win95/Netscape 4.05
Mac OS7.61/Netscape 3.01/4.04 
Win95/Netscape 4.51
Win95/MSIEeplorer 5.00



15桁の倍角文字を表示するために、size=30 でテキストエリアを定義しても、
ブラウザによって、このような表示になってしまいます。

マイクロソフトのエクスプローラ 5.0 に合わせて size=34 にすると、



丁度良いのですが、ネットスケープ 4.01 - 4.04 では、



こんなになってしまいます。



 そこで、JavaScript の navigator オブジェクトを使って
size の値を自動修正する関数を作ってみました。

ご覧のブラウザの場合、size=30 とすると
こうなりますが、この自動セット関数を使うと、
こうなります。効果はありましたでしょうか。
他のブラウザでも、同様の調整が行われます。



< 使用法 >

次のような記述をするとき

<FORM>

<input type="text" size=40>

</FORM>


次の JavaScript と入れ替えて下さい。

<FORM>

<script language="JavaScript">
<!-----

function SizeSet (f)
{
NN = (navigator.appName.substring(0,3) == "Net"
   && navigator.appVersion.substring(11,14) != "Mac");
IE = (navigator.appName.substring(0,3) == "Mic");
NNver  =  navigator.appVersion.substring(0,4);
IEver  =  navigator.appVersion.substring(22,25);
NN16   =  (navigator.appVersion.substring(9,11) == "16");
IE16   =  (navigator.appVersion.substring(36,39)=="3.1");
if ( NN && NNver > "4.00" && NNver < "4.05" ) k = 0.675;
else if ( NN && NNver == "3.01" && !NN16 )    k = 0.925;
else if ( NN && NNver == "4.51")              k = 0.925;
else if ( IE && IEver == "3.0" && IE16 )      k = 0.950;
else if ( IE && IEver == "3.0" && !IE16 )     k = 1.100;
else if ( IE && IEver == "4.0" )              k = 1.175;
else if ( IE && IEver == "5.0" )              k = 1.175;
else k = 1.000;
return Math.ceil(f*k);
}

document.write("<input type='text' size=" + SizeSet(40) + "'>");

// ----->
</script>

<!---ここは JavaScript の使えないブラウザのために記述する--->
<noscript>
<input type="text" size="40">
</noscript>

</FORM>



文字数(この例では 40)を指定するところが2ヶ所あります。ご注意下さい。
文字数は全角文字は "2文字" として、表示したい文字数を指定します。
このスクリプトの考え方は、ブラウザの名前とバージョンを判断して、
基準桁数(この例では 40 桁)に対して、修正係数により桁数を決定します。
判断条件に合致しないブラウザの場合は、基準桁数をそのまま採用します。

設定した修正係数は、基準桁数が 40 の時に実験的に最適化されており、
基準桁数が 40 より大きくても小さくても若干の誤差が発生します。



<参考情報>

 ご覧のブラウザのナビゲータ情報は下記の通りです。


上の表示は
<script language="JavaScript">
document.write("<form name='mssg'>")
document.write("navigator.appName.....<input type='text' name='appname' size=" + SizeSet(navigator.appName.length) + "><br>")
document.write("navigator.appVersion..<input type='text' name='version' size=" + SizeSet(navigator.appVersion.length) + "><br>")
document.write("navigator.userAgent...<input type='text' name='agent'   size=" + SizeSet(navigator.userAgent.length) + "><br>")
document.write("</form>")
</script>

こんな書き方をしてみました。
ブラウザ毎に異なる文字数を自動的に割り付けています。


 このページでご紹介した関数の作成にあたり参考にしたブラウザ情報は
以下の通りです(自動サイズセットの対象になっています)。

○Win3.1/ Netscape 1.1
 ・navigator.appName.....JavaScript非対応
 ・navigator.appVersion..JavaScript非対応
 ・navigator.userAgent...JavaScript非対応

○Win3.1/ Netscape 2.02
 ・navigator.appName.....Netscape
 ・navigator.appVersion..2.02 (Win16; I)
 ・navigator.userAgent...Mozilla/2.02 (Win16; I)

○Win3.1/ Netscape 3.01
 ・navigator.appName.....Netscape
 ・navigator.appVersion..3.01 (Win16; I)
 ・navigator.userAgent...Mozilla/3.01 (Win16; I)

○Win3.1/ MSIExplorer 3.02a
 ・navigator.appName.....Microsoft Internet Explorer
 ・navigator.appVersion..2.0 (compatible; MSIE 3.02; Windows 3.1)
 ・navigator.userAgent...Mozilla/2.0 (compatible; MSIE 3.02; Windows 3.1)

○Win95 / MSIExplorer 2.0
 ・navigator.appName.....JavaScript非対応
 ・navigator.appVersion..JavaScript非対応
 ・navigator.userAgent...JavaScript非対応

○Win95 / MSIExplorer 3.02
 ・navigator.appName.....Microsoft Internet Explorer
 ・navigator.appVersion..2.0 (compatible; MSIE 3.02; Update a; Windows 95)
 ・navigator.userAgent
      ......Mozilla/2.0 (compatible; MSIE 3.02; Update a; Windows 95)

○Win95 / Netscape 3.01
 ・navigator.appName.....Netscape
 ・navigator.appVersion..3.01 [ja] (Win95; I)
 ・navigator.userAgent...Mozilla/3.01 [ja] (Win95; I)

○Win95 / MSIExplorer 4.01
 ・navigator.appName.....Microsoft Internet Explorer
 ・navigator.appVersion..4.0 (compatible; MSIE 4.0; Windows 95)
 ・navigator.userAgent...Mozilla/4.0 (compatible; MSIE 4.0; Windows 95)

○Win95 / Netscape 4.01
 ・navigator.appName.....Netscape
 ・navigator.appVersion..4.01 [ja] (Win95; I)
 ・navigator.userAgent...Mozilla/4.01 [ja] (Win95; I)

○Win95 / Netscape 4.04
 ・navigator.appName.....Netscape
 ・navigator.appVersion..4.04 [ja] (Win95; I ;Nav)
 ・navigator.userAgent...Mozilla/4.04 [ja] (Win95; I ;Nav)

○Win95 / Netscape 4.05
 ・navigator.appName.....Netscape
 ・navigator.appVersion..4.05 [ja] (Win95; I)
 ・navigator.userAgent...Mozilla/4.05 [ja] (Win95; I)

○MacOS 7.61 / Netscape 3.01
 ・navigator.appName.....Netscape
 ・navigator.appVersion..3.01 [ja] (Macintosh; I; PPC)
 ・navigator.userAgent...Mozilla/3.01 [ja] (Macintosh; I; PPC)

○MacOS 7.61 / Netscape 4.04
 ・navigator.appName.....Netscape
 ・navigator.appVersion..4.04 [ja] (Macintosh; I; PPC, Nav)
 ・navigator.userAgent...Mozilla/4.04 [ja] (Macintosh; I; PPC, Nav)

○Win95 / Netscape 4.51
 ・navigator.appName.....Netscape
 ・navigator.appVersion..4.51 [ja] (Win95; I)
 ・navigator.userAgent...Mozilla/4.51 [ja] (Win95; I)

○Win95 / MSIExplorer 5.00
 ・navigator.appName.....Microsoft Internet Explorer
 ・navigator.appVersion..4.0 (compatible; MSIE 5.0; Windows 95)
 ・navigator.userAgent...Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)