最近,我建了一个聊天室。输入textarea的内容的链接造成了一些麻烦。
if(!String.linkify) {
String.prototype.linkify = function() {
// http://, https://, ftp://
var urlPattern = /\b(?:https?|ftp):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*[a-z0-9-+&@#\/%=~_|]/gim;
// www. sans http:// or https://
var pseudoUrlPattern = /(^|[^\/])(www\.[\S]+(\b|$))/gim;
// Email addresses
var emailAddressPattern = /[\w.]+@[a-zA-Z_-]+?(?:\.[a-zA-Z]{2,6})+/gim;
return this
.replace(urlPattern, '<a href="$&">$&</a>')
.replace(pseudoUrlPattern, '$1<a href="http://$2">$2</a>')
.replace(emailAddressPattern, '<a href="mailto:$&">$&</a>');
};
}
Not Found The requested URL â£https://www.link.com/product/ABC/myaffiliatelink was not found on this server.
要获取消息,我使用:
textContainer.textContent = message.linkify();
有人可以解释会发生什么以及如何解决这个问题吗?
答案 0 :(得分:2)
在思考并玩了一段时间后,我得到了答案。当我使用
textContainer.textContent = message.linkify();
我将结果定义为纯字符串。因此,我的linkify函数添加了诸如<a href="">
之类的html元素,然后被解释为字符串,因此失败。
解决方案是将呼叫更改为
textContainer.innerHTML = message.linkify();
因此,元素被解释为html元素并且可以扩展。 有关innerHTML和textContent之间差异的更多信息可以找到here。
最好的问候,乔。