コメント・プレビューの JavaScript エラーを解消する
デフォルトテンプレートのコメント・プレビュー画面ではJavaScript エラーが発生します。ご質問を頂きましたのでこれを解消する方法をご紹介します。
根本的な問題はデフォルトテンプレートのコメント・プレビューに「情報を保存する?」のチェックボックスが存在しないことです。ここではチェックボックスを追加せずにエラーを解消する方法と、チェックボックス自体を追加してエラーを解消する2つの方法を記します。3項はいずれの場合も実施してください。
1.「情報を保存する?」をコメント・プレビューに追加しない
現状のフォームのままでエラーのみ解消したい場合は、下記の 1.1 および 1.2 を実施してください。
1.1 インデックステンプレート・JavaScript の修正
デフォルトテンプレートのコメント・プレビュー画面を開いた時、IEの場合はステータスバーに「ページでエラーが発生しました」というメッセージが表示され、左下のアイコンをクリックすると
'document.comments_form.bakecookie'は Null またはオブジェクトではありません
Firefox の場合は[ツール]-[JavaScriptコンソール]を開くと
document.comments_form.bakecookie has no properties
という JavaScript エラーが発生します。
これはコメントプレビューのHTMLに「情報を保存する?」というチェックボックスが存在しないにもかかわらず、mt-site.js で document.comments_form.bakecookie を処理しようとするためです。
これを解消するためには、インデックステンプレートの「JavaScript(mt-site.js)」に下記の青色部分を追加します(計2行ありますのでご注意ください)。
function individualArchivesOnLoad(commenter_name) {
:
(中略)
:
if (document.comments_form) {
if (document.comments_form.email != undefined &&
(mtcmtmail = getCookie("mtcmtmail")))
document.comments_form.email.value = mtcmtmail;
if (document.comments_form.author != undefined &&
(mtcmtauth = getCookie("mtcmtauth")))
document.comments_form.author.value = mtcmtauth;
if (document.comments_form.url != undefined &&
(mtcmthome = getCookie("mtcmthome")))
document.comments_form.url.value = mtcmthome;
if (document.comments_form.bakecookie) {
if (mtcmtauth || mtcmthome) {
document.comments_form.bakecookie.checked = true;
} else {
document.comments_form.bakecookie.checked = false;
}
}
}
}
1.2 コメント・プレビューテンプレートの修正
これはコメントプレビュー画面から投稿した時に発生する JavaScript エラーです。IEでは分かりませんが、Firefox の JavaScript コンソールでは
this.bakecookie has no properties
というエラーが表示されます。これは投稿時に form 要素に記述された onsubmit 属性で this.bakecookie.checked という判定が実行されるためです。
これを解消するためには、コメントプレビューテンプレートの下記の赤色部分を削除します。
<form method="post" action="<$MTCGIPath$><$MTCommentScript$>" name="comments_form" onsubmit="if (this.bakecookie.checked) rememberMe(this)">
2.「情報を保存する?」をコメント・プレビューに追加する
コメント・プレビューテンプレートに、エントリー・アーカイブにあるチェックボックス(青色)を、下記のようにURLの下に
:
<p>
<label for="comment-url">URL: </label>
<input id="comment-url" name="url" size="30" value="<$MTCommentPreviewURL$>" />
</p>
<p>
<label for="comment-bake-cookie"><input type="checkbox"
id="comment-bake-cookie" name="bakecookie" onclick="if (!this.checked) forgetMe(document.comments_form)" value="1" />
この情報を登録しますか?</label>
</p>
:
となるように追加してください。エラーは発生しなくなりますが本来の動作は未確認ですのでご容赦ください。
3.コメント・プレビューテンプレートの修正(commenter_name.js の削除)
コメント・プレビューテンプレートのヘッダ部分に記述されている
<script type="text/javascript" src="<MTStaticWebPath>js/commenter_name.js"></script>
は不要ですので削除してください。
この行に記述されている commenter_name.js というファイルは、英語版の初期β版にはインストールパッケージに含まれていましたが、それ以降は含まれていません、つまりファイル自体が存在しません。
なおβ版で存在していた commenter_name.js の内容は、現在 mt-site.js に包含されています。
この行が残っていると、コメント・プレビュー画面で JavaScript エラーが発生する可能性があります。
「可能性がある」というのは、該当のファイルに本当にアクセスできない場合はエラーは発生しませんが、レンタルサーバで404エラーのファイルにリダイレクトする設定になっていると、表示されたHTMLファイルを不正な JavaScript として評価してしまい、IEでは
構文エラーです。
というエラーが表示されます。
2006.05.06 追記
3項を追加しました。
- MovableTypeプラグインの独自CGIをNginxに対応させる方法
- Movable Type 5で「Got an error: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?)」というエラーになる場合の対処
- 旧バージョンのMTでPerl5.26(Perl5.24以降)に対応する方法
- MT6.2のファイルアップロードで「Undefined subroutine &POSIX::strftime」になる問題の対処
- Movable Typeのファイルアップロードで「アップロードしたファイルは大きすぎます。」というエラーになる場合の対処
- Movable Typeのパスワード変更で「URLが不正です。」というエラーなる件についての対処
- Movable Typeで「Cannot find column 'blogs' for class 'MT::Blog'」となる場合の対処
- Movable TypeでMTPageNextタグが効かなくなる不具合について
- Movable Typeの復元で「Request-URI Too Large」になるときの対処
- サーバ故障と「Connection error: Too many connections」エラーおよびMySQLテーブル破損について
- Movable Typeでエラー発生箇所を特定する方法
- IE9でMovable Typeを利用する方法
- MTIfタグにtagモディファイアを利用する場合の注意事項
- Movable Type 5のブログの設定で「Can't call method &quot;label&quot; on unblessed reference」が発生する問題について
- Movable Type 5.03へのアップグレードで再構築時に「Script Error」が発生する件について(つづき)
≫ mt-site.jsの謎を追え from HiStyle:Quality of Lifeの向上
コメントをする際に、名前やメアド、URLを入力したら「情報を保存する?」というチ... [続きを読む]
≫ mt-site.jsの謎を追え from HiStyle:Quality of Lifeの向上
コメントをする際に、名前やメアド、URLを入力(メアドやURLは必須ではありませ... [続きを読む]
おはようございます。
やむやむでは デフォルトからかけ離れてしまったので
デフォルト状態からほとんど手を加えてないMTブログで試してみました。
1の方法でも 2の方法でも
'document.comments_form.bakecookie'は Null またはオブジェクトではありません
というエラーは出なくなりましたが、そのかわりに
構文エラーです
というエラーが出るんです。mt-site.js の } も忘れずに
つけたんだけどな?。( ̄? ̄;)
こんにちは。
エントリーしてくださってありがとうございます。
早速ガイドの通りにやってみたのですが、コメントの確認画面で構文エラーが出るようになりました。なんでなんでしょう?
>さえらさん、みずほさん
こんばんは。
3項を追加しましたので、こちらも設定ください。
ちなみにこのエントリーと似た内容の記事を随分前にアップしていました。(笑)
すみません。
初心者なもので、的外れな質問でしたら
すみません。
今ブログを構築中なのですが、コメントを投稿しようとすると
エントリーIDが見つかりません。
というエラーページが出てコメントできません。
色々見て、上記の1項と3項もいじってみたのですが原因がわかりません。。。
どうすれば直るかわかりますでしょうか…?
>sansprixさん
こんばんは。
ご質問の件ですが、下記URLのコメント欄に同様の事象の質問と回答が掲載されています。参考になれば幸いです。
http://movabletype.yh.land.to/archives/2005/10/01/movabletype-stylecatcher-plugin/
それではよろしくお願い致します。
ありがとうございます!
早速試してみます。
本当に助かります。ありがとうございました。
yujiroさん、こんばんわ。
いつもテンプレート使わせてもらっています。ありがとうございます!
ふと、気付いたら自分のブログでコメントをする際に、情報を保存する?のチェックが効かなくなっていました(もちろん実際に保存されません)
過去ログとかも読んでみたのですが、なかなかわかりませんでした。この記事が一番近いかと思ったのですが、インデックステンプレートの「JavaScript(mt-site.js)」というものがありません。ご教授いただければ助かります。
>gucciさん
こんばんは。
ご質問の件ですが、mt-site.js(テンプレートの「JavaScript」)がURL指定で参照すると404 Not Found になります。
これが不具合の原因と思われますのでご確認ください。
それではよろしくお願い致します。
yujiroさん。
おかげさまで問題を特定して、調べを進めることができました。
mt-site.jsの謎、解けました。
本当にありがとうございました!
>gucciさん
こんばんは。
ご連絡ありがとうございました。
無事になおったようでよかったです。
ではでは!