我正在与 socketio 进行聊天。每次发送消息时,我都会使用这个非常简单的 jquery 来显示它:
$('#try').prepend(my_message);
和:
<div id='try'></div>
我想做的是查找发布的消息是否包含链接,如果是,则使其可点击。我需要找到 http:// 和 www。
我发现了几个相关的问题,但没有一个给我我正在寻找的解决方案。
关于我如何做到这一点的任何想法?
我正在与 socketio 进行聊天。每次发送消息时,我都会使用这个非常简单的 jquery 来显示它:
$('#try').prepend(my_message);
和:
<div id='try'></div>
我想做的是查找发布的消息是否包含链接,如果是,则使其可点击。我需要找到 http:// 和 www。
我发现了几个相关的问题,但没有一个给我我正在寻找的解决方案。
关于我如何做到这一点的任何想法?
您应该使用正则表达式将所有 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 的问题。希望这可以帮助。
对于聊天中插入的每条新消息,请执行以下操作
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>
*/
然后将新消息重新附加到您的聊天中。