JavaScriptのスクリプトを書くときの注意点

JavaScriptって?
 偉そうなタイトルをつけてしまいましたが、私もそんなにJavaScriptの達人になったとかそういうわけでもありません。(^^; でもまぁ初心者の域は抜けたかなと思いますので少しメモがてらJavaScriptについて述べたいと思います。
 JavaScriptは名前の通りスクリプト言語です。Javaと名前は似ていますが全く別物です。 (かなり勘違いされている方が多い。JavaScriptの話を出すと「私はJavaはよく知らないので」とかいったようなとんちんかんな回答が返ってきたりする) しかし、JavaとJavaScriptの連携は可能です。(Netscape3.0以降)それはともかく。 歴史について述べてもしょうがないので止めておきますが、JavaScriptは基本的にはHTMLファイルの中に記述するスクリプト言語です。 その記述方法は・・・と書いていくと入門書みたいになりますね(^^; 入門書のたぐいは今となってはそこらじゅうに氾濫してますので(私がスクリプト書き始めた96年11月頃はまだあんまりなかったなぁ・・・)初心者の方で今のHTMLに飽き足らない方はチャレンジしてみてはいかがでしょう。 入門書的な話はできるだけ省くとして進めるとしましょう。
 
JavaScriptの実行環境
 JavaScriptが実行できるブラウザは限られています。NetscapeNavigater(以下NNと略す)2.0以降とInternetExplorer(以下IEと略す)3.0以降(4.0も多分)です。 しかも、それぞれで仕様が違います。MacとWindows95とWindowsNTでも動作が違います。 さらにUNIX用の英語版NNでも違います。 (大学などだとベータ版を入れ続けている場合が結構あったりする) できるだけ多くの人に自分の作ったものを見てもらいたいと思うと、結構大変です。 しかし、大まかにみて機種別の相違は部分的なバグで文法の違いといったものはまぁないと思っていいと思います。またJavaScriptのバージョンは基本的にNNのバージョンアップに伴ってあがっているので現在3つあることになりますが、最初のバージョンのものは4.0でもまぁ動作します。 また、NN2.0時のJavaScriptの仕様を見てIE3.0のJScript(JavaScriptと同じ)は作られているので要はNN2.0時のバージョンの文法に従えばかなりサポート範囲が広がると思われます。
 
問題点
 「では、問題無いではないか。とりあえずNN2.0で動けばいいだろう」と考えていると甘いと言わざるをえません。困ったものでNNでは動作するのにIEでは動作しないというスクリプトは割と存在すると思います。 私はおみくじのスクリプトを作った際に見事にひっかかりました。実は先に背景色のテストのスクリプトで問題を起こしているにもかかわらずです。 ポイントはどうもブラウザのスクリプト処理の方法にあるようです。 JavaScriptではオブジェクトとメソッド、プロパティをピリオドで繋いで表現しますが (文がわかりにくいですが、幾つか本を読めばわかると思います) NNでは例えばdocumentオブジェクトなんてのはかなりの頻度で省略します。 確実にこれが理由とは言い切れないのが心苦しいところですが、IE3.0ではこれらは省略できません。 NNでは当たり前の部分は省略しても差し支えないのですが、IE3.0では融通がききません。 さらに、新しいWindowを開いたとしましょう。 そこにdocument.writeを使って何か書き込みたいときはNNならいきなり文章を書くなりすればいいわけですが、IE3.0では下のような感じにdocument.open()が必要になります。
msg=window.open(hogehoge)
msg.document.open()
msg.document.write("hogehoge")
msg.document.close()
大体においてIE3.0は変に文法に厳しいようです。NNだと省略できるところが省略できないというのが大体のエラーの正体であると思います。
「なあんだ。じゃぁIE3.0で動作確認すればいいじゃないか」というかもしれませんが、それも甘いのです。つい先ほど、私もこの点に引っかかりました。 カラーテストのスクリプトを作ってIE3.0で動いたのでNNで動作確認してみると動かないのです。 理由は、プロパティの大文字小文字を間違えていたためでした。 NNのJavaScriptでは大文字小文字の間違いは大きな問題です。イベントハンドラなども含めて大文字小文字の区別はしっかりつけなければなりません。 ところがどうもIE3.0はあまり厳しくないようです。こういった点にも注意したいものです。
 
機種別の相違点
 やっと動くようになったと思っても、機種別の問題を抜きにはJavaScriptは語れません。最近は直ったようですが、Macでdocument.bgColorを使って背景色を変えると、画面が完全に塗りつぶされるという問題がありました。 また、MacのNNにはwindow.openで最初に指定されるはずのwindowのURLが読まれないという不具合があります。(現バージョンでは未確認)仕方ないのでMacに読ませるにはdocument.locationを使うことになりますが、これはNN2.0,IE3.0ではサポートされていません。 こういう場合は、仕方ないのでWindowを開こうとしている親のWindowからdocument.writeなどを使って書いてやる以外に方法がないと思います。
 また、UNIX上のNNでも問題があります。こちらはFORMのTEXTの入力フォームに文字を書き込もうとする場合です。 最近の4.0では無いようですが、3.0時代ではフォームに2バイト文字を書き込むとエラーが返るという不具合がありました。 よくある時計やテロップなどは書き直すたびにエラーが出るため、X-window上はNNの吐くエラーだらけになってしまいます。
 最後にもう一つ。NN2.0ではBODYタグで囲まれた部分にスクリプトタグが使われていると、そのスクリプトの実行はされますが、それ以降のテキストは全く表示されないという問題があります。テロップなんかを先頭に置いてたりなんかすると、ページが全く見れないわけで話になりません。
 
最後に
 JavaScriptやJava,ActiveX,Shockwave,MacromediaSplashなどはホームページを拡張するには大変有効な方法ではありますが、見る側の環境を考えると必ずしも自分の考えていた通りの結果,状況が映し出されるとは限りません。 使用する場合にはそれなりの覚悟が必要であると思います。

メール
JavaScript実験ページへ戻る
トップページへ戻る