【问题标题】:How turn text links into HTML links at the client side with javascript如何在客户端使用 javascript 将文本链接转换为 HTML 链接
【发布时间】:2010-05-30 08:14:20
【问题描述】:

在我的数据库中,我保存了表单中的每个链接:

www.example.com or http://www.example.com

有没有办法在客户端(例如javascript)将此文本链接转换为HTML链接,带有这样的标签和参数?:

<a href="http://www.example.com" rel="nofollow">www.example.com</a>

【问题讨论】:

  • 因为你使用了一个数据库,所以你在谈论一个动态的 webapp。为什么不在服务器端生成链接?
  • 有多种解决方案,但需要更多信息。我建议在服务器端做一个 cherouvim 说的——否则,是的,它可能使用 Javascript,但我们需要一些上下文。这段文字会在哪里?同一个区域还会有其他锚标签吗?

标签: javascript jquery html css database


【解决方案1】:

像 cherouvim 建议的那样,在服务器端这样做可能会更聪明,但这里有一个(天真的)javascript 函数,它针对指定的格式(带有和不带 http://-prefix 的 URL)执行此操作

    function makeLink(link) { 
        var url, desc;

        if (link.match('^http://')) {
            url = link;
            desc = link.substr(7, link.length - 7);
        } else {
            url = 'http://' + link;
            desc = link;
        }

        return '<a href="' + url + '" rel="nofollow">' + desc + '</a>';
    }

请注意,它不能很好地处理意外输入(https...),所以请不要在生产环境中按原样使用 :)

【讨论】:

  • 你真的认为rel=nofollow有什么用吗,因为这是在客户端生成的?
  • @nikc - 我只是在满足 OP 的要求。虽然点了。
  • 糟糕!上面没看到啊对不起。 :-)
【解决方案2】:

我会这样尝试:

text.replace(/([A-Za-z]+:\/\/)?[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/, function(url) {
return url.link(url);
})

【讨论】:

  • 我很想投反对票。这就像对“生命、宇宙和一切的答案是什么”这个问题回答 42 一样。这很可能是真的,但并没有真正解释任何事情。
猜你喜欢
  • 2013-03-30
  • 1970-01-01
  • 2018-03-30
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 2017-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多