在大家松鼠机器人时,遇到回复内容只能是文本的问题(我想回复的内容出现超链接)。请求好友帮助解决了此问题,现在分享给大家。机器人搭建自 Github/kompasim 的 chatbot 项目。
原始添加回复内容的js函数为
function AddText(user, message) {
console.log(user);
console.log(message);
var div = $('<div>');
var name = $('<labe>').addClass('name');
var text = $('<span>').addClass('message');
name.text(user + ':');
text.text('\t' + message);
div.append(name);
div.append(text);
$('.chatBox').append(div);
$('.chatBox').scrollTop($(".chatBox").scrollTop() + 100);
}
现在修改为
function AddText(user, message) {
console.log(user);
console.log(message);
var div = $('<div>');
var name = $('<labe>').addClass('name');
var reg=/(http:\/\/|https:\/\/)((\w|=|\?|\.|\/|&|-)+)/g;
if(message.indexOf('http') != -1){
var url = message.match(reg);
console.log(url);
var text=$('<span>');
var a = $('<a>').addClass('message').attr('href',url).attr('target','_blank');
a.text(url);
text.append(a);
text.append(message.replace(reg,''));
name.text(user + ':');
}
else{
var text = $('<span>').addClass('message');
name.text(user + ':');
text.text('\t' + message);
}
div.append(name);
div.append(text);
$('.chatBox').append(div);
$('.chatBox').scrollTop($(".chatBox").scrollTop() + 100);
}
主要是添加了http文本判断,用正则表达式提取网址,然后html超链接输出,如果后面有其他文本则加上。缺点是只能匹配一个超链接,如果出现多个就会出错。不知有没有大神会多个超链接的匹配的?