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

标签 javascript formatting text-parsing

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

转换字符串
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>节点

关于javascript - 在Javascript中使链接可点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2536004/

相关文章:

javascript - 防止在数组中添加相同的随机值

javascript - 无法理解 node.js

javascript - 为什么从无限 while 循环内部调用时不调用 setTimeout

excel - 如何使excel停止将列视为日期

regex - 使用 Powershell 子字符串和正则表达式提取可变数量的标记

perl - 哪些 Perl 模块适合数据处理?

javascript - 如何获取特定行参数并向其发送 React Table 中的 API 调用?

javascript - 无法将格式传递给 JavaScript

c - C 中数组的输出不会格式化?

php - 从 PHP 中的分隔字符串中提取 float