我認爲,當一個用戶發送一條消息,包括一個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
我認爲代碼工作正常時,我檢查替換腳本:/ –