javascript - 在Javascript中使链接可点击?

有没有一种简单的方法可以从

转换字符串
Then go to http:/example.com/ and foo the bar!

进入

Then go to <a href="http://example.com">example.com</a> and foo the bar!

在现有 HTML 页面中的 Javascript 中?

最佳答案

是的。最简单的方法是使用正则表达式将看起来像链接的东西替换为链接的等价物。比如:

node.innerHTML = node.innerHTML.replace(/(http:\/\/[^\s]+)/g, "<a href='$1'>$1</a>")

(我的 RegEx 有点生疏,所以您可能需要使用语法)。这只是一个简单的案例。您需要警惕这里的脚本注入(inject)(例如,如果我有 http://"><script>doevil()</script> )。解决此问题的一种方法是使用链接构建功能:

node.innerHTML = node.innerHTML.replace(/ ... /g, buildLink($1));

在哪里 buildLink()可以检查以确保 URL 不包含任何恶意内容。

然而,RegEx-innerHTML 方法在处理大量文本时表现不佳,因为它会拆除并重建节点的整个 HTML 内容。您也可以使用 DOM 方法来实现这一点:

  • 查找对文本节点的引用
  • 在内容中,查找 URL 的开始和结束索引
  • 使用 splitText()将节点拆分为3的方法:之前,链接,之后
  • 创建一个 <a> href 的节点和链接一样
  • 使用 insertBefore()插入 <a>链接前的节点
  • 使用 appendChild()将链接移至 <a>节点

https://stackoverflow.com/questions/2536004/

相关文章:

formatting - Gnuplot 平滑置信区间线而不是误差线

forms - 如何在 Laravel 中处理日期输入

python - 在没有空格或换行符的python中打印变量

c# - 格式化字母数字字符串

java - 在字符串模板电子邮件中格式化日期

formatting - JSON.Net 将 XML 序列化为 JSON 驼峰式案例

sql - 在 Oracle 中将时差转换为给定格式

emacs - 在 LaTeX 模式 emacs 中缩进 C 代码区域

python - 在python 3中将表情符号转换为Unicode,反之亦然

javascript - 如何使用变量名实现字符串格式化程序