Diary?

2008-10-20
Mon

(21:13)

くっそー、今日もまた HTML/CSS/JS で妙な問題に出会っちまった。一体何があったかというと、フレームの中に取り込まれたページのサイズが、そのページが後方互換モードと標準準拠モードのどちらで記述されているかでページのサイズの解釈が異なるというもの。標準準拠だとなんか横幅の計算がおかしくて、後方互換モードだと出ないはずの横スクロールバーが出たりした。

じゃあ後方互換モードでレンダリングさせるかというとそうはならなくて、前に書いたヘッダ行固定テーブルの CSS は標準準拠でないと動作しない。そこを JavaScript で書き直すのは NG なので、結局今回も expression で秘密裏に対処する事にした。横スクロールが出るのは縦スクロールのスクロールバーでクライアント領域が縮んだ時に限られるので、 body の可視領域と実領域を比較すればいいだろう。……と思ったんだけどなあ。

そこで本日二度目の問題が出てきて、それは「標準準拠モードと後方互換モードでクライアント領域のサイズの取得方法が異なる」というもの(http://mag.autumn.org/Content.modf?id=20051107135216)。これはわかった時にはまたしてものけぞった。何でこんなふざけた非互換性があるんだよ。これまでは仕事で JavaScript を書くときはほぼ毎回方互換モードだったから気がつかなかった。

「エキスパート C プログラミング」には確か

Q
C の演算子の順位で間違っているものは?
A
直観に反するものすべて

のような記述があったと思うけど、こういうワケワカメな仕様はとにかく全部間違ってる。まったく、二つ合わせてとんでもない時間を無駄にしてしまった。

Creative Commons
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。