以前は、社内で使う自分達で作ったWebツールに Javascript は貼り付けて入力を容易に行えるようにしていました。2000年ごろの古い技術で作られて、あまりメンテされていないシステムには、以外と効果的でした。
今時そんなシステムは残っていないだろう、思っていたのですが、派遣先にはあります。Perlで作られた予約システムで、DBを使わずに実現しています。まあ、当日分した入れられず、1日分を夕方に印刷して完了、という仕組みなんでやれることは簡単なんですが。
ところが、このシステムはバグだらけ。Perl なんで過去の技術者は手を出せなかったのかもしれません。まあ、元のソースが余りにひどいので、下手にいじると動かなくなるから扱えなかったのが正しいでしょう。
今回、簡単な修正をやろうとしたところ、結構重要と思える変数を、ファイルから読み込んだデータを一時的に格納する変数として使っていました。おかげで、デバックに苦労させられました。
今日は、簡単な Javascript を組み込もうと思ったのですが、うまくいきません。いろいろ試してみたり、ログをチェックして悩みましたが解りませんでした。たぶん、日本語処理ではだろう、見込んでいるのですが、解決できません。
やりたいのは、フォームの投稿の際、Submitボタンを押す代わりに、Javascript を組み込んだリンクで代用する、というもの。input のテキストに予め用意していた値を挿入して、フォームのオブジェクトの subimit() を実行するだけの処理なので簡単です。
テストで作ったのはうまくいったのですが組み込むと動作せず、解決に時間がかかってしまいました。最終的には Javascript でボタンを押す動作をやらせています。これだと、ちょっともたつく感じがあります。
Perl のシステムを最初に作ったのが、昔のUNIX環境だったのでしょう。文字コードはEUCでした。昔のUNIXは、この文字コードが使われていて、私もよく使いました。しかし、今では使う機会が少ないように思います。
タグの value に、EUCの文字を設定していました。たぶん、これだけなら問題ないのですが、name に変数を設定しており、
<form>で呼ばれるCGIで、この変数をチェックしていました。perl の日本語処理で、しかも、POST投稿された文字列を判定しています。私の経験では、javascript で UTF-8以外の文字コードを使った場合、ちゃんと動作するか自信がありません。以前は、SJISのデータをサーバー側で UTF-8 に変換するための処理をわざわざ作ったこともあります。
ここを詳しくしらべても、たぶんダメだろうと思い、次善の策を採用しました。
ちょっと不満ですが今のところ動作しています。この Perl のシステム、なんとかしたいと思いつつ、今回も最小限の修正で乗り切ることになりました。