我认为,当一个用户发送一条消息,包括一个http://
这里我的代码会工作,但不会:如何在使用Javascript的SVG文本中添加超链接?
function showMessage(nameStr, contentStr, textColor) {
var node = document.getElementById("chatbox");
var nameNode = document.createElementNS("http://www.w3.org/2000/svg", "tspan", textColor);
nameNode.setAttribute("x", 100);
nameNode.setAttribute("dy", 20);
nameNode.setAttribute("fill", textColor);
nameNode.appendChild(document.createTextNode(nameStr));
node.appendChild(nameNode);
var contentNode = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
contentStr = contentStr.replace(/((http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?)/g,
'<a target="blank" href="$1">$1</a>');
contentNode.setAttribute("x", 200);
contentNode.setAttribute("fill", textColor);
contentNode.innerHTML = contentStr;
// Add the name to the text node
node.appendChild(contentNode);
}
任何人都可以找到这段代码中的错误?
nameStr
是发送消息的人的姓名,contentStr
是用户输入,并且该程序会自动改变,因此任何链接变成可点击的链接,并textColor
只是颜色的消息。
欢迎堆栈溢出。对于你所问的问题,你的代码太复杂了。请阅读:http://stackoverflow.com/help/mcve也许只有一行是相关的。你是否单独测试过它? –
这个正则表达式对网址做了很多错误的假设。 – zzzzBov
我认为代码工作正常时,我检查替换脚本:/ –