JAVASCRIPT

まぁ僕も別にJAVASCRIPT(JS)なんて本格的に触ったのはこの12月になってからなわけですが。上の開発の苦労なんかを書き残しておこうかと。

苦労といっても、上で使っているJSは、基本的にはものすごい簡単なことしかしてません。スタイルシートのdisplay属性をinlineにするかnoneにするかで、現れる、現れないが決まるので、そこを変更するだけです。
変更したいタグにidやnameをつけて、getElementById,getElementsByNameで拾ってきます。Nameの場合はgetElement"s"ByNameなのとname属性はひとつのページにいっぱいつけられるので最後に番号が必要(getElementsByName('nantara')[0])って感じです。)なのに注意ですね。


こう書くと簡単そうなんですが、ここにたどり着くまでにはいろいろありました。最初はvisibilityって属性(指定部分を透明にします)をいじろうと思ってて、マウスでクリックした位置に透明にしておいたポップアップメニューを出す予定だったんですが、そういうことをするとそのメニューと元の画面の重なりとかが問題になります。元の画面はフォームの部品ばっかりなんてIEだとうまく表示されない不具合とかあるんですよね。技術的に回避可能なんですが、結構面倒でいやなところです。クリックした位置の拾い方もIEとNNでは違い、コードを2つ書いてチェックしないといけません。JAVASCRIPTはこういうとこが面倒なんですよね。ちなみに今回のコードはWindowsのIE(Sleipnir)、OperaFirefoxの最新ヴァージョンで動作確認しています。たぶんMacSafariでも動くと思うけど、動作確認はしていません。古いブラウザだと動かない可能性あるなぁ…そこらへんはすみません。


JSを使っているとスタイルシートを多用したくなり、実際に上のチャットでは多用しているわけですが、これの段組とかなかなか難しいですね。floatとか段組とかで検索するといっぱい苦労のほどがでてくるかと…。このへんの技術が下手だと、たしかにtableのほうが意図どおりのデザインができますね。ただそうは言ってもtableで複雑な構造にするとソースが読みにくいしなぁ。そのへんはネット上でかなり議論がありますのでそちらに譲ります。ちなみに上のプログラムではdivを上から並べただけのものすごい簡単な構造にしています。


ちなみにスタイルシートの適用に関してはInternetExploler(IE)が駄目ですね。最大のシェアを誇るIEですが、スタイルシートの適用に関しては、ほかのブラウザのほうがちゃんとしています。今回いろいろ試しているなかで気づいたのですが、position:absoluteにしたのにposition:relativeみたいにでてしまいました。
ただ、僕は最初IEが正しくて他でみると崩れるなぁと思っていたのですが、よく定義をみて考えると、IEのほうが間違ってることに気づきました。IEだけでスタイルシートのチェックをするといけませんよ。まぁそうはいっても設定の仕方がグレイな時の処理がいまいちなだけで、ちゃんとかちっこちに指定すればIEも正しく解釈してくれると思います。


今回改造のしにくさの一因になっているのはPHPとJAVASCRIPTと連携の部分です。PHPでJSのソースコードを書くときに少々知識がいります。
コンピュータ上で文字列を扱うときにはよくクオテーションマークをつけます。"hoge"とか'nantara'とかいった感じです。しかしJAVASCRIPTで文字列だと解釈させるためにはクオテーションの記号そのものを文字列として扱わなければいけないですよね。たとえば'aaa'という文字列を書くためにはどうするかということなんですが、'\'aaa\''と書かなければいけません。このあたりのことが分かってないと改造した結果動かなくなってしまうことがあります。


PHPはよい言語だと思うのですが、いいDebuggerがないというのが問題だと言われていますね。たしかにその通りかもしれません。けっこうデバッグに苦労します。


まぁこんな感想でしたが、JAVASCRIPT+サーバー側のなんらかのプログラムを使ってできないことってのは相当少ないです。スタイルシートの問題もからんだときなど面倒なことが起きるもののWEBチャットを作るうえでは大事な技術かと思いました。