試験的に実装してみました。
comments.php
これを
<?php comment_form(); ?>
こうする。
<script type="text/x-html"> <?php comment_form(); ?> </script> <script type="text/javascript"> (function() { var s = document.getElementsByTagName('script'); document.write(s[s.length-2].text); }()); </script> <noscript><p>Turn on JavaScript to comment.</p></noscript>
出力されるフォームのHTMLをまるごとscript
要素内に閉じ込めて非HTMLとして出力し、直後にスクリプトでそれをdocument.write()
で書き出す、という。
type="text/x-html"
については別の記事参照。
スクリプトが使えないUA向けには一応メッセージを表示。スパム送信がどういう方法なのか知らんけど、たぶんスクリプトは動かないだろうしこれでいいかなあと。
スクリプトが動くのなら、さらにユーザーにちょっと操作をしてもらう仕様にする必要があるが、とりあえずこれで試してみようと思ってます。