2010年7月アーカイブ

テキストエリア挿入支援処理などを行うjavascriptの処理時に発見したこと。

Vista+IE8の環境で「getElementById("moji")」とかやるとなぜかエラーになる。

内容は「オブジェクトがありません」とのこと。


無いわけない。

ちゃんとid属性もname属性も指定して、値も一緒にしている。


ためしに、

getElementById(moji)

とやったら、「'moji'は定義されていません」というエラー。
まあ、当たり前だわな。

しかし、

getElementById('moji')

とやると、うまくいく。


IE7の時はこのエラーが出なかったような記憶がアルのだが・・・

協調性を無視し我が道をいくMicrosoftに感謝。


しかし何回も何回もソースを見直してたのがバカみたいだ。


最近はどの言語でも"moji"と書いたら文字列で処理するだろが。普通は。
子プロセスに処理を渡して、親プロセスで標準出力を切るとき、

my $pid;
if($pid = fork){
 #親の処理
 close (STDOUT);
 wait;
}
elsif(defined $pid){
 close (STDOUT);
 #子の処理
}
 ・
 ・
 ・


みたいな感じで今までOKだったのだが、ロリポップ系サーバなどではこれがうまく行かない。ブラウザの出力自体は切れるのだが、子プロセスの処理を行ってくれない。

WEBサーバによって変わると聞いたことがあるので、ググってみたところ、標準出力を切る部分を、

close (STDOUT);
close (STDERR);
close (STDIN);

とやったら上手く行った。

apache2.0系(うちの環境)とapache1.3系(ロリポップ系?)でどうやら違うらしい。

ちなみに、上記3つの順番が違っても1つ足りなくてもダメだった。

close (STDIN);
close (STDOUT);
close (STDERR);

↑これだとなぜか子プロセスが終了するまでブラウザが開放されない


close (STDOUT);
close (STDERR);
close (STDIN);

↑この順番じゃないとダメみたい。

STDOUTだけだと、新しいapacheのときダメだよって聞いていたので、それとは逆の現象だが、解決したからまあいいか。

このアーカイブについて

このページには、2010年7月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2010年6月です。

次のアーカイブは2010年9月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.22-ja