ADP: あとあと困らないような書き方っての続き。いちおうWeb Konetaカテゴリに入れておく。
ADPをやってきて、あとでうまくいかないことが判明してしまったものの代表例ふたつを挙げて、原因をまとめてみる(実際には、他にもたくさんやらかしているけれどね)。
ひとつめ。
何度も書いているけれど、検索フォームにCSS(旧版)のがんばる妥協案(2005年2月)だ。フォームの入力ボックスは、IE6の後方互換モードだけでなく、当時のSafariやOperaもborder-boxでレンダリングしていたので、Firefox用に-moz-box-sizingを使って、border-boxにあわせるのが正解、という解説をしていた。
大きなミスは、IE6の標準準拠モードがcontent-boxでレンダリングすることを知っていたのに、IE7が(後で)出たときに高い確率ではまることを予想できなかったことだ。けっきょく、IE7のみならず、OperaとSafariが以後のバージョン(Opera 9, Safari 3)でcontent-boxに寝返ったので、このやり方は完全にダメになってしまった。
form {
position: absolute;
left: 20px;
top: 20px;
width: 180px;
height: 40px;
}
.search {
-moz-box-sizing: border-box;
position: absolute;
left: 0;
bottom: 0;
padding: 1px;
width: 120px;
height: 20px;
}
ふたつめ。
エクセルチャット(Firefox非対応、2004年8月)で、その直後に出たWindows XP Service Pack 2(SP2)のIE6ではステータスバーが2重に出現するようになったことだ。
エクセルチャットでは、IE6のタイトルバー以外、つまり、メニューバー、ツールバー、アドレスバー、ステータスバーをすべて非表示にして(現行のブラウザにはほとんど効かないはずだが)、代わりにこちらで用意したはりぼての偽メニューバー、ツールバー、数式バー、ステータスバーを表示していた。
エクセルチャット (666 by 268 pixels, 12.8KB)
SP2では、フィッシング対策の一環としてステータスバーが常に表示されるよう仕様が変更されたため、偽物と本物の両方がでるようになったのだ(逆に言えば、それまではフィッシングし放題だったことになる)。
ひとつめ、ふたつめに共通しているのは、1)仕様で決まっていないこと(=本来実現できないこと)を実現するためにブラウザの独自拡張を使ってなんとかしようとして、2)その時点では実現できたものの、3)後で仕様そのものが変わってしまったためにうまくいかなくなってしまった、ことである。
結論としては、独自拡張を使用する際は、ある程度リスクがあることを認識し、その独自拡張の挙動が変わってしまったり、なくなったとしても大きな影響が出ない範囲で使うべきだ、ということになるね。人の振り見て我が振り直せ、ということで、独自拡張を使うときには少し気にかけてほしい。
トラックバックURL: http://adp.daa.jp/cgi/mt2/mt-tb.cgi/757