こんにちは、martinです。さて、いくつかアップデートです。ひとつは、まだまだありそうなIE6関連ですが、そもそもコアとなるJavaScriptライブラリのoParts.jsを圧縮していたんですが、何とも間抜けなことにIE向けのconditional commentGまでが削られていました。世にあるいくつかの優秀な圧縮スクリプトの中で、エラーもなく動いたものを採用したはずなんですが・・・。で、問題はそう簡単ではなくてじゃ条件コメントを復活させればOKかというとそうでもなく、またしてもIE6のトラップにかかって暫く時間を無駄にしました。結果から言えば、IE6とIE7との区別には以下のようにJScriptエンジンのバージョンで差別するという手法を取っていました。
oParts.client = {
w3c : !!window.getComputedStyle,
MSIE : /*@cc_on!@*/false,
IE6 : false/*@|| @_jscript_version < 5.7@*/,
IE7 : false/*@|| @_jscript_version >= 5.7@*/,
Opera : !!window.opera,
Gecko : !!window.GeckoActiveXObject,
Safari : !!(navigator.vendor && navigator.vendor.match(/Apple/))
};
でもこれは最新のIE6では意図したようには作動しないようです(IE6でもバージョンが5.7になったらしい)。なので以下のようにしました。
oParts.client = {
w3c : !!window.getComputedStyle,
MSIE : /*@cc_on!@*/false,
IE6 : false/*@||!window.XMLHttpRequest@*/,
IE7 : false/*@||!!window.XMLHttpRequest@*/,
Opera : !!window.opera,
Gecko : !!window.GeckoActiveXObject,
Safari : !!(navigator.vendor && navigator.vendor.match(/Apple/))
};
これもそのうちIE6がネイティブでwindow.XMLHttpRequestをサポートすれば通用しなくなりますが、どうかなぁ。今のところは大丈夫みたいですが。これらの修正などによって、管理画面でのリストメニューがIE6でまるで作動しないという問題が解決しています。
あとは、記事の投稿に際してオートセーブ機能が付いていますが、このインターフェイスがこちらの意図したようには動いていなかったようで。本来は、オートセーブ機能が動いている際にはタイマーのアニメーションが表示されて、それと分かるという風にデザインしていたんですが。これは単にwrite.inc.phpにあるvisibility: hidden;をdisplay: none;に変えるだけで良かったです。
あとは、アクセス解析には、ユーザーのパソコンの解像度とかをレポートするものも用意してありますが、これが機能していませんでした。ついでなのでスクリプトを見直し、少しコンパクトになりました。
まだありますが、あとは、カテゴリー管理で、カテゴリーの順序を入れ替えるインターフェイスがありますが、このソートアルゴリズムをちょいと見直し。こういうのは頭を酷使するので疲れました。歳だ。
とりあえず今回はこんなところで。この記事を書いていて先ほど気付いたことですが、ツールバーを固定モードにして書いていて、顔アイコンを挿入しようと思ったのですが、スクロールの関係かあるいはposition:fixed;の影響なのか、アイコン一覧が見えなくなりますね(Firefoxですが多分他のブラウザでもそうでしょう)。これは、またの機会に。
例によって、差分ファイルを添付しておきます。
[追記 2008/03/29 16:39:56]
ユーザーの環境を見てみるスクリプト(view.php)の処理でJavaScriptが無効時の処理に絡んでNoticeエラーが出ますね。修正しておきました。あと、このアップデート後、stat/data/ディレクトリにあるclient_env.logは一度消した方が良いかもしれません。サイズがゼロならそのままで構いませんが。
Comments