jQuery文本链接脚本?
有谁知道一个脚本,可以select所有的URL的文本引用,并自动replace指向这些位置的锚标记?
For example: http://www.google.com would automatically turn into <a href="http://www.google.com">http://www.google.com</a>
注:我想要这个,因为我不想通过我的所有内容,并用锚标记包装它们。
JQuery在这里不会帮你一把,因为你并不关心DOM遍历/操作(除了创build锚标签)。 如果所有的URL都在<p class =“url”>标签中,那么也许。
一个香草JavaScript解决scheme可能是你想要的,作为命运, 这个人应该有你覆盖 。
注意:此脚本的更新和更正版本现在可在https://github.com/maranomynet/linkify(GPL / MIT许可证)
嗯…对我来说,这似乎是jQuery的完美任务。
…这样的事情发生在我脑海:
// Define: Linkify plugin (function($){ var url1 = /(^|<|\s)(www\..+?\..+?)(\s|>|$)/g, url2 = /(^|<|\s)(((https?|ftp):\/\/|mailto:).+?)(\s|>|$)/g, linkifyThis = function () { var childNodes = this.childNodes, i = childNodes.length; while(i--) { var n = childNodes[i]; if (n.nodeType == 3) { var html = $.trim(n.nodeValue); if (html) { html = html.replace(/&/g, '&') .replace(/</g, '<') .replace(/>/g, '>') .replace(url1, '$1<a href="http://$2">$2</a>$3') .replace(url2, '$1<a href="$2">$2</a>$5'); $(n).after(html).remove(); } } else if (n.nodeType == 1 && !/^(a|button|textarea)$/i.test(n.tagName)) { linkifyThis.call(n); } } }; $.fn.linkify = function () { return this.each(linkifyThis); }; })(jQuery); // Usage example: jQuery('div.textbody').linkify();
它试图将以下所有事件转化为链接:
-
www.example.com/path
-
http://www.example.com/path
-
mailto:me@example.com
-
ftp://www.server.com/path
- …所有上述包裹在尖括号(即
<
…>
)
请享用 :-)
我有这个function,我打电话
textToLinks: function(text) { var re = /(https?:\/\/(([-\w\.]+)+(:\d+)?(\/([\w/_\.]*(\?\S+)?)?)?))/g; return text.replace(re, "<a href=\"$1\" title=\"\">$1</a>"); }
我build议你在呈现给浏览器之前在你的静态页面上做这个,否则你会把转换计算的负担转移到你的可怜的访问者身上。 :)以下是你如何在Ruby中执行(从标准input读取,写入标准输出):
while line = gets puts line.gsub( /(^|[^"'])(http\S+)/, "\\1<a href='\\2'>\\2</a>" ) end
显然,你会想要考虑如何使这个如你所愿。 以上要求所有URL以http开头,并检查不要转换引号内的URL(即可能已经在<a href="…">内)。 它不会抓住ftp://,mailto :. 它会愉快地转换材料像<script>身体,你可能不希望发生的地方。
最令人满意的解决scheme是真正的用你的编辑器手工转换,所以你可以眼球和批准所有的替代。 一个好的编辑器会让你用组参考(又名后面的参考)做正则expression式replace,所以它不应该是一个大问题。
看看这个JQuery插件: https : //code.google.com/p/jquery-linkifier/
做这个服务器端有时候不是一个选项。 想想客户端的Twitter小部件(使用jsonp直接使用Twitter API),并且想要dynamic链接Tweets中的所有URL …
如果你想从另一个angular度来看一个解决scheme…如果你可以通过PHP和HTML净化器运行页面,它可以autoformat输出和链接任何url。