Web: 2009年3月アーカイブ
Prototype Window ClassというPrototype.jsベースのポップアップウィンドウを手軽に作れるライブラリを試していたのですが、IEで実行するとどうしてもポップアップ起動時にjavascriptエラーが出てしまう。
呼び出し方を中心にいろいろ探るもなかなか原因がつかめなかったのですが、最終的にprototype.jsのバージョンが原因っぽいことが判明。
実行環境にはprototype.js最新版1.6.0.3を入れていましたが、その環境だとエラーになるようで、1.5系かまたは1.6系なら1.6.0に落とすとエラーが出なくなりました。よく見たらそもそも同梱されていたprototypeは、1.5.1_rc3でした。
正常には動くようになりましたが、最新版でエラーが出てしまうのとか、しばらく更新も止まっていそうだし、ちょっと動きももっさり感があるし、ということでもう一つどうかなあという印象。
ところでサンプルにあったMr.proto。この人は何者ですか(笑)
という件で、数時間たっぷりはまってしまいました。
「hoge_test」みたいなホスト名をhostsで指定してアクセスするようなローカルのテスト環境を作っていて、自分が動作確認していた時には問題無かったのに、同じ様な環境を用意したチームのメンバーがテストするとセッション機能が思うように動作しない。
始めはちゃんと動くはずという先入観で、単にソースが同期されていないのでは、とかPHP周りの設定が違っていないかとか、違う方向に頭が行っててどうにも糸口がつかめなかったのですが、ようやく動作しているのはFirefoxで実行した時であること、IEからだとセッション発行時にCookieが作られていないことに気付きます。
それをキーワードに調べを進めたところ、表題の件が判明したというわけです。ホスト名を「hogetest」のような名前に修正したらあっさり解決・・・。確認した限り、サブドメインやドメインにアンダーバーを含むアクセス時にはIE6、IE7ではcookieが作られませんでした。(Firefoxはその点ゆるいようですね。)
そもそもRFC的にドメイン名のアンダーバーの使用は許されていないようで、それに準拠したIEの納得の仕様というわけだったんですね。どうせテスト環境だとアクセスできているのをいいことに、全くもって名前に気を配っていなかった自分に反省。