MT - IE8とSafari4だとコメント確認画面でCaptchaが表示されない

一週間くらい前に Movable Type 4.26 が出ていたので、そろそろ適用しようかと思い、本日適用しました。
でアップデートが完了して、しばらくしたら、なんと MT 4.261 がリリースされました・・・

バグフィックスらしいので仕方がないですが、何と言うタイミングの悪さ・・・

勘弁してくれよー・・・と思いながらも、結局やらなくちゃいけないのでアップデートしました。
て、色々機能が正しく動くか確認していたら何か変なバグを発見。

コメントの確認画面を表示した際に、IE8 と Safari4 だと Captcha の画像や入力フォームが表示されません・・・

しかも、この現象は、このブログではなくて、先日公開した新しいサイトの方のみ・・・
(まだ、ブログではアナウンスしてないんですけど「リコメン道」と言うサイトを作ってます。)

っと言う事で、調査してみました。

整理すると、問題は IE8 と Safari4(Win) で発生しました。
Chrome2 や Firefox3 では発生しません。

IE6/7 で発生するかどうかは調べて無いので分かりません。
そもそも、ブラウザ自体の問題なのか、ブラウザの設定の問題なのかも分かりません。

リコメン道」では発生しますが、「INOLOG Ver.2」では発生しません。

何となく、テンプレート絡みだろうなー思い、「コメントプレビュー」テンプレートを見ていると、「INOLOG」と「リコメン道」では以下の様な違いがありました。

ちょうど Captcha が表示される辺りに、

<$MTCaptchaFields$>

と言う、タグが「INOLOG」には有りますが「リコメン道」には有りません。

ドキュメントを見ると、MTCaptchaFields には以下のような説明が書いてあります。

CAPTCHA 認証を利用する設定を行っている場合、認証用の画像とインプットフィールドを表示します。

Captchaのフォーム
MTCaptchaFields で書き出される部分?

これを見る限り、MTCaptchaFields を追加すれば良さそうです。
そう言えば、Captcha を INOLOG で使い始めたばかりの頃も、上手く表示されなくて悩んだ事があったんですが、その時に追加したようなしなかったような・・・

ただ、「リコメン道」でも普通の記事の画面のコメントフォームには Captcha が表示されていたので、そのテンプレートを見てみると、MTCaptchaFields 何てどこにもありません。

なんで出てるの??って感じなんですが、怪しいのが以下の部分。

<div id="comments-open-captcha"></div>

どうやら、JavaScript で上記の部分を書き換えているような感じ。

うーん、激しくめんどくさい。

確かに、記事ページのコメントフォームでは IE8/Safari4 と Firefox3/Chrome2 でレンダリングに違いは殆ど無いんですが、コメントプレビューになるとチョット変わるんですよね。

Safari4 で表示したコメントプレビューのコメント入力フォーム
↑ Safari のコメントフォーム
コメント入力欄以外が消えています。

どのように変わるのかと言うと、IE8 と Safari4 だと、コメント入力欄以外が消えるんですよ・・・
ページが表示された後に・・・

明らかに JavaScript ですよねー。

勘弁してくれよー・・・

何の意味があるのかは知りませんが、ページをレンダリングした後に入力フォームに対して何かしらの操作を行っている訳です。
で、たぶんそれのせいで Captcha の画像や入力フォームが出てこない・・・

たぶん JavaScript の呼び出しを解除するか、バグっぽい部分を書き換えると直るんだろうけど、時間がかかりそうなので強引ですが以下の方法で対処しました。

<div id="comments-open-captcha"><$MTCaptchaFields$></div>

これだと、全てのブラウザでコメント確認画面でも Captcha の画像と入力フォームが表示されました。

この手の、テンプレート周りの不具合は、Movable Type を使っている限り仕方がない事ですけど、メンドクサイです・・・