
そんなに多くはないと思いますが、FC2ブログで自動出力されるいくつかのファイルに対し、バリデート対策を行っている という方向け記事。今回は特に コメントフォーム に関する内容です。
はじめに
FC2ブログでは、個人の意思に関わらず自動で差し込まれるファイルや文字列(ソースコード)などがあります。その一部はhtmlの整合性検査(validation, バリデーション) で エラー あるいは 警告 扱いになるものも。詳細については以下の記事を参照のこと。
W3C validatorのエラーの説明 html構文をチェックすることができる W3C validator
W3Cというのはweb技術の標準化を制定する非営利団体で、日本では慶應義塾大学がホストを担っています。その団体が提供しているのがW3C validatorというツールです。...
* 語句がバラバラだと混乱するかもなので念の為整理しておきます。
バリデート(動: validate) = 検証する
バリデーション(名: validation) = 検証, 検証すること
バリデータ(名: validator) = 検証を行う物(ツール)や人
自分のブログのhtmlを綺麗な状態で保ちたいという方は自動挿入ファイルやコードに対し色々な操作をすることになります。その中でも今回は </body> タグを操作している方へ向けた記事内容です。
body終了タグ操作の目的
FC2ブログの自動挿入システムの大抵はある特定の htmlタグ を見つけ、その前後に特定のコードを出力する、という方法を取っています。
今回の </body> については以下のコード挿入の目印になっています。
<script type="text/javascript" charset="utf-8" src="//static.fc2.com/comment.js" defer></script>
<script type="text/javascript" src="//static.fc2.com/js/blog/blog_res.js" defer></script>
<script type="text/javascript" charset="utf-8" src="https://admin.blog.fc2.com/dctanalyzer.php" defer></script>
上から /comment.js と /blog_res.js は コメントのクッキーに関係するファイル
最後の /dctanalyzer.php は 独自ドメイン管理に関するファイル です(通常ドメイン取得者のみ)
で、それぞれのコード内 type="text/javascript" と charset="utf-8" について、現在のweb標準(LivingStandard)では『記す必要はない (unnecessary for JavaScript resources)』とされ、『警告 (warning)』の対象です。
『エラー error』と『警告 (warning)』の違いは
- エラー = 問題あり, 修正必須
- 警告 = ユーザーによる判断を仰ぐ, できるだけ対処した方が良い
という感じです。ですから警告に関しては「無理をしてまで修正をする必要はない」とも言えます。いや、できるなら修正した方がそりゃ良いに決まってますが、それによって他に悪影響が出たりなどする場合にはやめておきなさいよ、みたいな。例えば修正しようと思ったらざっと500時間かかる、とか(笑)
FC2ブログでこの警告を避けるために行う(行える)対処は厳選して2つあります。そして次の章でFC2での「対処することで他に出る悪影響」いついて説明します。
警告を避けるためのbody終了タグ操作
- </body> ではなく </body > に変更する
- </body> を 書かない
FC2がコード付加の目印にするのは </body> です。これは完全一致が条件ですから、一文字でも違えば目印ではなくなります。
①の方法は </body >
と、右ブラケット( > )の直前に 半角スペースを含める という方法。
この形がhtml的にどうかというと、何も問題ありません。例えば『JSでclassやstyleを付け外しする』などよく用いられますが、その際にこの形というのは起こります。左ブラケット( < ) の直後はだめですよ。あくまでも右ブラケットの直前のみOK
< /body>
</body >
②は『書かない』という方法です。htmlでは </body> や </html> などは 省略可能 です。もっと言えばhtmlやbodyは開始タグも省略可能。但し 厳格なルールに完全に準拠できるならば という但し書きつきです。なのでこちらは初心者向けではありません。
こうして上記のような対策を行うとどうなるかというと 必須コード(ファイル)の自動挿入が行われなくなります。
管理人による能動的コード付加
警告対象となるコードが挿入されなくなりますので、当然バリデート結果も『警告なし』となりバンザーイ、とはなりません。最初に注意したようにこれらのファイルは 必須 ですから、自分でテンプレートhtmlに追加を行ってください。追加時は以下のようにすればOKです。
<!-- コメント関連 必須 -->
<script src="//static.fc2.com/comment.js" defer></script>
<script src="//static.fc2.com/js/blog/blog_res.js" defer></script>
<!-- コメント関連 必須 ここまで -->
<!-- 独自ドメイン 必須 -->
<script src="https://admin.blog.fc2.com/dctanalyzer.php" defer></script>
<!-- 独自ドメイン 必須 ここまで -->
* 独自ドメイン必須 のコードは独自ドメイン取得者のみです。
上記内容を </body> の直前に追加。用途がわからなくなってしまわないようコメントも付けておいた方が良いでしょう。
body終了タグを書かない、という方法を取る場合は </html> の直前に。html終了タグも省略しているという場合はhtml全体ソースコードの最終に追加。
あるいはコメントに関する2つのコードはまとめることができますので、以下の内容をJSファイルとして保存して自分の割当サーバーで実行しても構いません。そうすればコメント関連コードが一つで済みます。
(function(){try{var a=5;var d=setInterval(function(){a--;if(0>=a){clearInterval(d)}var f=document.getElementsByTagName("body");if(!f[0]){return}clearInterval(d);var h=["name","mail","url"];for(var k=0,g=h.length;k0){var h=document.getElementsByName("comment["+g+"]");if(h.length){h[0].value=f}}}function e(i){var f=document.cookie+";";if(f.length>0){var k=f.indexOf(i+"=");if(k!=-1){k=k+i.length+1;var g=f.indexOf(";",k);if(g==-1){g=f.length}var h="";try{h=decodeURIComponent(f.substring(k,g))}catch(j){}return h}}return""}}catch(c){}})();setBlogCookie("name");setBlogCookie("mail");setBlogCookie("url");function setBlogCookie(c){var d=(document.getElementById?document.getElementById(c):null);if(d&&d.value==""){var e=document.cookie+";",b="blog_res_"+c+"=",a=e.indexOf(b);if(a!=-1){d.value=decodeURIComponent(e.substring(a+b.length,e.indexOf(";",a)).replace(/\+/g," "))}}};
テンプレートを変更したら移植が必須です。
みなさんbody終了タグ操作は忘れずやるんだけども、コメント関連ファイルに関しては結構な確率でみなさん忘れがち (´・ω・`)
現時点で コメント欄のクッキーが効いていない という方はまず間違いなく自身のカスタマイズ(body終了タグ操作)によってコメント関連ファイルが適用されていない状態です。つまりファイルの自主的付加を忘れているということです。
私もそうだけど、移植・移設ってなんだかんだで忘れちゃうんですよねー (∵`)
なのでコメントを付けておくなど忘れない工夫は必要ですね。
さいごに
対処法など記しましたが、body終了タグの操作自体は『行うべき内容』ではありません。こだわりのある方だけがやれば良い、という性質のものです。
例えばこれをやることによって度々何らかの問題が生じる(記載忘れ, 移植忘れも含む)ですとか、管理が大変でテンプレートを変更するたびてんやわんや、などの場合は無理にやらない方が良いでしょう。何か障害(と感じられるもの)が発生すると焦りますし時間取られますよね (∵`)
そして忘れてはいけないのは、これらのファイルは 自動挿入が原則である という点。仮にFC2が改正・改定などを行った場合には内容が変わることもあるわけです。あくまでも自動なのですから、ユーザーへの告知なく行われるでしょうし、それに対して文句を言う権限もない、という点。自己管理が難しいと感じる場合には素直にFC2のシステムに従うことをおすすめします。
There are no comments yet.