[Web]IE対策: baseタグを削除。すると・・・
以前からずーーーっと気になってた、IEで文字列の選択ができないバグを直した。放置していた理由は、明確な原因が分からなく、対応できなかったから
とりあえずではあるが、baseタグを使用しているページで、親要素にpositionを指定している子要素に対して再現するようだ。positionやfloatってバグ多いよね。なんとかしてよ…
で、対策としてbaseタグをなくしました。やったね!! これだけで解決!!
と言いたい所ですが、別の問題が持ち上がりました
baseタグとは、そのページ内で使用するURLのルートディレクトリとなる文字列を指定するタグ。例えばhead内に
<base href="http://www.geocities.jp/kissasoftware/"/>と書いた場合、以下のように
<img src="img/smiles/smile.png"/>と指定したURLは全て
<img src="http://www.geocities.jp/kissasoftware/img/smiles/smile.png"/>に置き換えられる。
baseタグを用いることで、絶対パスでURLを指定するときのような冗長さをなくすことが出来る。
ところが今回やむなくこのbaseタグの使用を止めたので、このサイトで用いている全てのURLが無効になっている
もっともトップページのURLはbaseタグがなくなっても同じものを指しているので、問題なく表示できる。しかし個々の記事のpermalinkへ飛ぶと顔文字が消えるなどの症状が出る
問題はblogのディレクトリ管理にある。私のサイトのディレクトリ構造は
+ kissasoftware
+ img
+ smiles
- smile.png
:
- worry.png
+ archive
- 2005_07_01_neutoria_archive.htm
- 2005_08_01_neutoria_archive.htm
:
- 2005_11_01_neutoria_archive.htm
- index.htm
となっている。つまり、太字で書いたトップページのindex.htmと2005_11_01_neutoria_archive.htmとでは、smile.pngを参照するまでの相対パスが違うのだ
これを解決するには全てのパスを絶対パスで指定するしかない。しかしそうすると、冗長にURLを記述する必要がある上、ファイル容量が大きくなってしまうという欠点がある。baseタグはこのあたりを実にうまく処理していた。使えないのは本当に残念だ
(全部IEが悪いというのは言うまでもない)
blogはCMSとしては手軽で有能だが、こういうところにも欠点(!?)もある。これらを統一するいい方法あるかなー?? 思いついた人教えてください
0 Comments:
コメントを投稿
<< Home