今週月曜に投稿したEC-CUBEの決済対応の話ですが、ブラウザ(というかIE)の「戻る」対応の関係で、site_frame.tplとcss.jsに手を加えることになりました。IEのformタグがaccept-charsetをサポートしていればこんな苦労せずに、さっくり終わった仕事なんでしょうね(まだ終わってないけど^^;)。
1.新規作成したconfirm.tplのformタグ部分
<form name="form1" id="form1" method="post" action="<!--{$tpl_URL}-->"
accept-charset="shift_jis" onsubmit="if (document.all) document.charset='shift_jis';">
- ※フォーム情報の文字エンコーディングをshift_jisに強制変換するための記述です。
2.site_frame.tpl(ほかのjsファイルの記述も同様)
<script type="text/javascript" src="<!--{$TPL_DIR}-->js/css.js"
charset="<!--{$smarty.const.CHAR_CODE}-->"></script>
- ※HTMLドキュメントの文字エンコーディングを強制変換してもJavaScriptファイル(データ)はそのままUTF-8を維持させるための記述です。
3.css.js(先頭に追加)
if (document.all && document.charset == 'shift_jis') { document.location.reload(); exit; }
- ※HTMLドキュメントの文字エンコーディングを強制変換したページに戻った際、HTMLドキュメントを再読み込みしてきちんと表示するためです。
3を行うことで、文字化けなどは対処できますが、工夫しないとフォームで入力(変更)した情報はなくなってしまいます。今回のケースのように入力がない確認ページだからできる対処といえますね。
EC-CUBE関連の仕事はまだ続いているのですが、忘れないようにメモしておきます。
投稿日:2009年9月17日
- ※コメントは、スパム対策などのためIPアドレスにて制限しております。
- ※誹謗や中傷、スパムなど、不適切な内容は公開いたしません。ご了承ください。