Oct 02, 2009
Oct 01, 2009
Web Clips:JavaScriptで画像のwidthとheightの値を取得
旧Ganesha's Lab.(by SQLite2版Loggix)より移転転記。(2009-12-13)
前回、scripts.js のカスタマイズがIE以外では無効と書いたが、関係ありそうな情報をいくつか探してみた。実際に再カスタマイズを試すのは先の話になりそうなので、その時にまた探さなくて済むようにClipしておく。
考察
上の4つめ、アップデート前の Loggix で Safari のみ画像サイズが取得できなかったのは、これが原因だったんじゃないだろうか。
さて、どのサイトでも共通しているのは、ブラウザによって画像サイズの取得方法を変えなければいけない、ということ。改めて考えてみるとscripts.jsのカスタマイズでやっているのは、imgタグ内にwidthとheightの値を書き出すようにしているだけだから、値の取得方法についてはデフォルトのまままったく触っていない。こっちを追加でカスタマイズする必要があるのだろう。また、最新版で挙動が変わっているのは、やっぱりjQueryを導入したことで前バージョンと画像サイズの取得方法が変わっているんじゃないかと推測。
問題はjQuery関係でファイルがやたら増えているので、どこを弄ればいいかさっぱり分からないこと。ゆっくり時間がとれる時じゃないと弄るのは無理、よって当分先の話。
旧Ganesha's Lab.(by SQLite2版Loggix)より移転転記。(2009-12-13)
Loggix 9.7.28の calendar.html 内にバグがあったので2箇所ほど修正。表面上は何の問題もないように見えるが、修正しないとThe W3C Markup Validation Serviceでvalidが貰えない。
まず修正したのは、calendar.html の4行目~10行目にまたがる<tl> ~ </tl> の部分。5行目の<th>に対応する</th>が無かったので、10行目の</tl>の前、9行目に</th>を追記した。
*修正後のコード(赤字部分が修正箇所)
<tr> <th colspan="7" abbr="Year and Month"> <a href="<?php echo $item['calendar']['dir']?>/<?php echo $item['calendar']['target']?>.php?d=<?php echo $item['calendar']['prev_month']?>&ex=1" class="prev-month">« </a> <a href="<?php echo $item['calendar']['dir']?>/<?php echo $item['calendar']['target']?>.php?d=<?php echo $item['calendar']['this_month']?>&ex=1"><?php echo $item['calendar']['year_and_month']?></a> <a href="<?php echo $item['calendar']['dir']?>/<?php echo $item['calendar']['target']?>.php?d=<?php echo $item['calendar']['next_month']?>&ex=1" class="next-month"> »</a> </th> </tr>
次に、calendar.html の26行目~34行目にまたがる <ul> ~ </ul> の部分。28行目の <ul> が26行目の <ul> の直接の子要素になってしまっている上に、33行目の </li> に対応する <li> が無い。これは、実は27行目の <li> ~ </li> の </li> が余分で、実際には27行目の <li> と33行目の </li> が対応するのだ。そう考えれば、28行目の <ul> はこの <li> ~ </li> の中に入るので、26行目の <ul> の直接の子要素にならない。
*修正後のコード(赤字部分が修正箇所)
<ul id="archives"> <li><a id="more-archives">Archives</a></li> <ul id="arcvhies-by-year"> <?php foreach($item['calendar']['month_array'] as $key => $value ): ?> <li><a href="<?php echo $item['calendar']['dir']?>/<?php echo $item['calendar']['target']?>.php?d=<?php echo $key?>"><?php echo date('Y / m', strtotime($key))?></a></li> <?php endforeach?> </ul> </li> </ul>
これで問題なくThe W3C Markup Validation Serviceでvalidが貰えるようになっているはず。