Netscape Navigator 3.0 for Win32 で <PARAM> タグが使えない!

JavaApplet は、それが埋め込まれた HTML 文章からパラメータを受け取る事ができます。これは JavaApplet に渡す引数のようなもので、同じ JavaApplet でもその振舞いを異なるものにすることができます。通常、

<APPLET CODE="TestApplet.class" WIDTH=100 HEIGHT=100>
<PARAM NAME="parameter1" VALUE="v1">
</APPLET>

とすることで、TestApplet が HTML 文章から "parameter1" という名前で、その値が "v1" であるようなパラメータを取得することができます("v1" は String クラスです)。

しかし、Netscape Navigator 3.0 for Win32 では、このパラメータを受け取ることが出来なくなってしまいました。パラメータの値が全て Null になってしまいます。これは Netscape Navigator 3.0 の b6 以降で確認され、正式版でも直ってません。さらに Gold 3.0 でも同様です。

でもやっぱり <PARAM> が使いたいので、いろいろ漁ってみると、fj.lang.java でこのバグについて話し合われてました。どうやら、
「Option の Document Encoding が Japanese だとダメらしい」
ことが分って、
「Western にすると、うまく行くらしい」
のです。試しにやってみると、確かにうまく動きます。でもこれじゃ JavaApplet 以外の日本語テキストが文字化けしちゃいます。そこで Western のフォントを MS P 明朝とかにしちゃうと、バッチリです。でも、
「Western のフォントを MS P 明朝にしてる人って、どれぐらいいるの?」
という心配が残ります。出来ればそんな操作無しに JavaApplet も日本語も表示したいものです。

と思ってたら、やっぱり解決策はあるんです。fj.lang.java でも発言なさってましたが、faichan@kt.rim.or.jp さんによって、分りやすくまとめられていました(ここ)。僕がもっともスマートだと思うのは対策2の2、
「Parameter を書いた決まった名前のファイルを用意しておき、InputStream で読む」
でした。

ただし JavaApplet だけを独立したフレームに入れている場合は、簡単な方法があります。そのフレームだけ Document Encoding を変更することができるのです。JavaApplet を表示する HTML ファイルの先頭の <HEAD> タグを以下のようにします。

<HEAD>
<TITLE> Title of this page. </TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
</HEAD>

これで JavaApplet のあるフレームは Western、他のフレームは Japanese になり、めでたしめでたし。


Back to Java Tips Page
E-mail: yoshida@ueda.info.waseda.ac.jp
Last modified :