コメント・プレビューの JavaScript エラーを解消する

コメント・プレビューの JavaScript エラーを解消する

Posted at May 4,2006 1:55 AM
Tag:[Customize, JavaScript, MovableType]

デフォルトテンプレートのコメント・プレビュー画面では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項を追加しました。

関連記事
トラックバックURL


トラックバック

mt-site.jsの謎を追え from HiStyle:Quality of Lifeの向上
コメントをする際に、名前やメアド、URLを入力したら「情報を保存する?」というチ... [続きを読む]

Tracked on June 17, 2006 1:13 AM

mt-site.jsの謎を追え from HiStyle:Quality of Lifeの向上
コメントをする際に、名前やメアド、URLを入力(メアドやURLは必須ではありませ... [続きを読む]

Tracked on June 17, 2006 1:17 AM
コメント

おはようございます。
やむやむでは デフォルトからかけ離れてしまったので
デフォルト状態からほとんど手を加えてないMTブログで試してみました。
1の方法でも 2の方法でも
'document.comments_form.bakecookie'は Null またはオブジェクトではありません
というエラーは出なくなりましたが、そのかわりに
構文エラーです
というエラーが出るんです。mt-site.js の } も忘れずに
つけたんだけどな?。( ̄? ̄;)

[1] Posted by さえら : May 4, 2006 8:51 AM

こんにちは。
エントリーしてくださってありがとうございます。

早速ガイドの通りにやってみたのですが、コメントの確認画面で構文エラーが出るようになりました。なんでなんでしょう?

[2] Posted by みずほ : May 5, 2006 10:41 PM

>さえらさん、みずほさん
こんばんは。
3項を追加しましたので、こちらも設定ください。

ちなみにこのエントリーと似た内容の記事を随分前にアップしていました。(笑)

[3] Posted by yujiro : May 8, 2006 10:13 PM

すみません。
初心者なもので、的外れな質問でしたら
すみません。

今ブログを構築中なのですが、コメントを投稿しようとすると

エントリーIDが見つかりません。

というエラーページが出てコメントできません。

色々見て、上記の1項と3項もいじってみたのですが原因がわかりません。。。
どうすれば直るかわかりますでしょうか…?

[4] Posted by sansprix : May 12, 2006 4:06 AM

>sansprixさん
こんばんは。
ご質問の件ですが、下記URLのコメント欄に同様の事象の質問と回答が掲載されています。参考になれば幸いです。

http://movabletype.yh.land.to/archives/2005/10/01/movabletype-stylecatcher-plugin/

それではよろしくお願い致します。

[5] Posted by yujiro : May 13, 2006 12:58 AM

ありがとうございます!
早速試してみます。
本当に助かります。ありがとうございました。

[6] Posted by sansprix : May 13, 2006 4:07 AM

yujiroさん、こんばんわ。
いつもテンプレート使わせてもらっています。ありがとうございます!

ふと、気付いたら自分のブログでコメントをする際に、情報を保存する?のチェックが効かなくなっていました(もちろん実際に保存されません)

過去ログとかも読んでみたのですが、なかなかわかりませんでした。この記事が一番近いかと思ったのですが、インデックステンプレートの「JavaScript(mt-site.js)」というものがありません。ご教授いただければ助かります。

[7] Posted by gucci : June 16, 2006 10:31 PM

>gucciさん
こんばんは。
ご質問の件ですが、mt-site.js(テンプレートの「JavaScript」)がURL指定で参照すると404 Not Found になります。
これが不具合の原因と思われますのでご確認ください。
それではよろしくお願い致します。

[8] Posted by yujiro : June 17, 2006 12:12 AM

yujiroさん。
おかげさまで問題を特定して、調べを進めることができました。
mt-site.jsの謎、解けました。
本当にありがとうございました!

[9] Posted by gucci : June 17, 2006 1:18 AM

>gucciさん
こんばんは。
ご連絡ありがとうございました。
無事になおったようでよかったです。
ではでは!

[10] Posted by yujiro : June 17, 2006 1:38 AM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)