Я думал, что мой код здесь будет работать, когда пользователь отправляет сообщение, которое включает в себя http://
, но это не делает:Как добавить гиперссылки в текст в SVG с помощью Javascript?
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 Возможно, имеет смысл только одна строка. Вы тестировали его изолированно? –
Это регулярное выражение делает много ошибочных предположений о URL-адресах. – zzzzBov
Я думаю, что код отлично работает, когда я проверил заменяющий скрипт:/ –