4

私は socketio とのチャットを開発しています。メッセージが送信されるたびに、次の非常に単純な jquery を使用して表示します。

            $('#try').prepend(my_message);

と:

            <div id='try'></div>

私がしたいのは、投稿されたメッセージにリンクが含まれているかどうかを調べ、含まれている場合はクリック可能にすることです。http:// と www のいずれかを見つける必要があります。

関連するいくつかの質問を見つけましたが、探している解決策を提供してくれるものはありませんでした。

どうすればそれを達成できるかについてのアイデアはありますか?

4

2 に答える 2

9

すべての http/https リンクをアンカー タグに置き換えるには、正規表現を使用する必要があります。

function replaceURLWithHTMLLinks(text) {
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
    return text.replace(exp,"<a href='$1'>$1</a>"); 
}

詳細については、プレーン URL をリンクに置き換える方法をご覧ください。およびコーディング ホラー: URL の問題。お役に立てれば。

于 2013-01-15T08:30:07.460 に答える
6

チャットに挿入されたすべての新しいメッセージに対して、次のようなことを行います

var conversation = "This message contains a link to http://www.google.com "
                 + "and another to www.stackoverflow.com";

conversation = conversation.replace(/(www\..+?)(\s|$)/g, function(text, link) {
   return '<a href="http://'+ link +'">'+ link +'</a>';
})



/**
 *  output :
 *  This message contains a link to <a href="http://www.google.com">http:
 *  //www.google.com</a>and another to <a href="http://stackoverflow.com">   
 *  www.stackoverflow.com</a>
 */

次に、新しいメッセージをチャットに再度追加します。

于 2013-01-15T08:27:00.363 に答える