January 07, 2004

JavaScriptでリンクの除去

MovableTypeのコメントで『URLを自動的にリンクにする』を選択していると、コメントの概要表示をしようとするときにこのリンクが邪魔でうまくいかないことがあります。
この場合の対処方法として、MT側でリンクを除去するsanitizeグローバルフィルタを<$MTCommentBody sanitize="1"$>のようにかけることが考えられますが、『URLを自動的にリンクにする』をチェックしていた場合、うちのBlogではこのフィルタが有効に働きませんでした。

仕方がないので、JavaScriptでリンクの除去をおこなうことにします。<a href="(URL)">と</a>をコメントテキストから除去すれば、この場合目的は達成できます。

var html="<$MTCommentBody convert_breaks='0' encode_js='1'$>".replace(/<a href[^>]*>/g,"").replace(/<\/a>/g,"");

上のコードでリンクが除去された文字列を得ることが出来ます。あとはdocument.write(html);としてやれば、リンクがないものを表示することができます。概要表示などしたい場合はdocument.write(html.substr(0,[表示する文字数]));などとすればいいでしょう。

13:43 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdel.icio.usでブックマーク | トラックバック
このエントリーのトラックバックURL: http://fenrir.naruoka.org/mt/mt-tb.cgi/142
コメント

Mozilla Firebirdだと、どうもそのJavaScriptで無限ループ状態になってしまうようです。Operaでは問題ないのですが…。

Posted by: mya : January 7, 2004 07:28 PM

情報ありがとうございます。このページには上のスクリプトを使用しているのですが、Firebird0.7で確認してみましたが現在のところ問題なくページをみることができます。
よろしければ、テストした状況などを教えていただけますか?
なお、このページはWin2000+IE5.5・NN7・Opera・Sleipnir、MacOSX+Safariで動作検証していますが、なんとか動いています。

Posted by: fenrir : January 7, 2004 09:22 PM

Safariでもチェック済みでしたか。うーむ。うちでやるとハングしてしまいました。他はFirebird 0.7(Mac&Win)、Safari、Opera辺りで確認。Operaでは問題ないようです(JavaScriptのwarningは出ますが)。追調査してみます。

Posted by: mya : January 8, 2004 12:48 AM
コメントする









名前、アドレスを登録しますか?
(次回以降コメント入力が楽になります)
  • 匿名でのコメントは受け付けておりません。
  • 名前(ハンドル名可)とメールアドレスは必ず入力してください。
  • メールアドレスを表示されたくないときはURLも必ず記入してください。
  • コメント欄でHTMLタグは使用できません。
  • コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
  • コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。