当前位置:首页 > 网络科技 > jQuery自动给网站文章中文本URL添加超链接

jQuery自动给网站文章中文本URL添加超链接

10个月前 (08-25)admin网络科技32

作为一个资深的 SEOER 以及用户体验的极致追求者,总是会在实际的操作和使用中找到可以提升或者是简化的地方,昨天在分享《WordPress 自动将当前文章标签添加为关键词内链》文章重新定义文章内链的时候就在思考,内链可以做到自动添加,那么外链呢?

很多时候或者大多数人并不原因在文章中添加外链,所有很多时候即使是需要分享其它的网站也只会用文本链接,简而言之就是看上去是个链接,但是实际上并不能直接点击,需要复制到浏览器地址栏去访问,原因就是懂点网站优化的朋友就知道是为了防止导出权重,所有这一点子凡可以理解,并且自己很多时候在编辑文章的时候也不愿意给其它 URL 做超链接。

虽然从站长和编辑的角度来说我很理解,但作为用户来说,就非常的不方便了。而今天子凡就要来解决这个问题,既然是解决问题,那么就需要知其所以然。为了网站本身不导出外链,所有编辑使用文本 URL,这样搜索引擎抓取的时候这个文本 URL 并不会被搜索引擎去访问,那么解决用户无法直接点击访问的办法就是利用 js 或者 jQuery 的方式自动给这些文本 URL 添加上超链接,因为搜索引擎本身不会去执行 js,所有只有当用户访问时用 js 渲染功能,这样搜索引擎获取的文章内容就是没有超链接的文本 URL,而用户访问时则是可以点击的超链接 URL。

1
2
3
4
5
6
7
8
9
10
11
12
13
//jQuery 自动给文本 URL 添加可点击超链接链接
var urlRegex = /(https?://)?([da-z.-]+).([a-z.]{2,6})([/?w.-=#%]*)*/g; //适配多样化的 URL 正则表达式
$(".your-class-name *").not("a").addBack().contents().each(function() { //.your-class-name 为文章包裹的元素名称
	if(this.nodeType === 3 && this.textContent.trim().length > 0) { //非空文本节点
		if ($(this).parents('a').length == 0) {//检查当前文本节点是否在链接元素内部
			var newText = this.textContent.replace(urlRegex, function(match) {
				var url = match.startsWith('http') ? match : 'http://' + match; //判断 URL 是否包含 http 协议前缀
				return '<a href="' + url + '" target="_blank" rel="nofollow noopener">' + match + '</a>'; //将文本 URL 转换为超链接
			});
			$(this).replaceWith(newText);
		}
	}
});

这段代码的核心是一个正则表达式 urlRegex 和一个 jQuery 语句,它们分别用于匹配 URL 和遍历 DOM 元素。

正则表达式“/(https?://)?([da-z.-]+).([a-z.]{2,6})([/?w.-=#%]*)*/g”用于匹配文本中的多样化 URL,子凡我可是测试了很多不用样式的 URL,确保能够竟可能的适配更多的 URL。这个表达式可以匹配以 http:// 或 https:// 开头的 URL,也可以匹配没有这些前缀的 URL。对于没有 http:// 或 https:// 前缀的 URL,我们将自动添加 http:// 前缀。

接下来,我们使用 jQuery 的 $(“.your-class-name *”).not(“a”).addBack().contents().each() 语句来遍历指定类名 “your-class-name” 下的所有子节点。我们检查每个节点是否是文本节点,即 nodeType === 3,并且排除了空的文本节点,.not(“a”)也排除了子节点已经是超链接的内容。如果满足这些条件,我们就用 replace 方法替换文本中的 URL,并用 replaceWith 方法更新原始的文本节点。

在 replace 方法中,我们为匹配的 URL 生成一个新的超链接标签。如果 URL 没有 http:// 或 https:// 前缀,我们会自动添加 http:// 前缀。生成的超链接标签使用 target=”_blank” 属性,以便在新的浏览器标签页中打开链接,当然为了更好的保证即使是搜索引擎渲染了页面,也能够自动的禁止搜索引擎爬取,所有子凡也给链接的 rel 属性设置了 nofollow。

w.haolusi.com

本文链接:https://w.haolusi.com/jquery-add-text-url-link.html

扫描二维码推送至手机访问。

版权声明:本文由豪鲁斯兴趣网发布,如需转载请注明出处。

本文链接:https://w.haolusi.com/?id=1521

标签: 设计开发
分享给朋友:

“jQuery自动给网站文章中文本URL添加超链接” 的相关文章

The latest podcast industry trends and predictions

The latest podcast industry trends and predictions

_ Latest Trends1. **Content Diversification**:- Podcast content is becoming increasingly diversified, covering everything from news, educati...

WordPress如何移除登录界面中英文语言切换框

WordPress如何移除登录界面中英文语言切换框

其实早在 WordPress 5.9 版本开始,WordPress 默认登录界面就增加了语言切换选项, 其目的就是允许用户自己选择要使用的语言登录后台。这个功能对于多语言网站或是国际性站点可能还有点用,但是对于国内用户来说就显得有些多余。最近子凡在做更深度的 WordPress 优化,同时也为了丰富...

MySQL如何选择utf8mb4_general_ci和utf8mb4_0900_ai_ci字符集排序规则

MySQL如何选择utf8mb4_general_ci和utf8mb4_0900_ai_ci字符集排序规则

最近在做一些关于新项目的规划和测试,那么既然是要做新的项目当然首先要考虑的就是最新的技术标准,也把开发环境都统一升级了一遍,而在做 MySQL 数据库创建的时候就发现了一个小小的变化,本着对技术的执着那么就不得不来一探究竟。正式生产环境本着稳定高于一切的宗旨,所以也就不太可能做到数据库方面的升级保持...

WordPress别名slug增加点(.)符号支持

WordPress别名slug增加点(.)符号支持

熟悉 WordPress 的朋友们都知道,WordPress 在 URL 链接中的处理算得上是一刀切,所有的特殊符号及字符都是使用减号/连字符(-)来进行分隔,这其实是一种对搜索引擎非常友好的分隔方式,也是谷歌搜索引擎所推荐的连字符,其中谷歌有一句提示“不妨考虑在网址中使用连字符来分隔字...

FCPX/PR的剪辑时间线XML与字幕SRT互转|字幕Srt转XML互转工具|xml转srt|srt转fcpxml|Tutorial

FCPX/PR的剪辑时间线XML与字幕SRT互转|字幕Srt转XML互转工具|xml转srt|srt转fcpxml|Tutorial

本篇文章目录|Table of Contents Hide 概述应用场景FCPX/PR剪辑时间线XML与SRT字幕互转获取与安装:直接安装 ...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。