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

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

2年前 (2024-08-25)admin网络科技136

作为一个资深的 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添加超链接” 的相关文章

Essential Strategies for Enhancing Cybersecurity in the Digital Age

Essential Strategies for Enhancing Cybersecurity in the Digital Age

With the rapid development of Information Technology, Cybersecurity has become an essential issue in modern Society. Cybersecurity...

百度正式下线“快速收录”功能,VIP可以申请“快速抓取”权限

百度正式下线“快速收录”功能,VIP可以申请“快速抓取”权限

最近可以说是站长们一片哀嚎,清明节前刚经历一次大的波动恢复没两天,让后百度又一次性的在清明节再次送走了,目前又开始缓慢的在恢复,但是似乎情况也并不是很妙。就在这时,百度搜索资源平台发布了一则“关于升级平台「快速收录」工具的通知”的公告,意思就是正式下线快速收录功能,换新上线一个叫做“快速抓取”的工具...

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

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

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

MYSQL字符集有哪些

MYSQL字符集有哪些

MySQL 中的字符集是用来确定数据库中字符数据的编码方式,它决定了如何存储和检索数据。MySQL 中常用的字符集:UTF8:UTF-8 是一种 Unicode 字符编码方式,它可以表示世界上大部分的文字字符。MySQL 中的 UTF8 字符集最多只能存储 3 字节的 UTF-8 编码字符,...

最新免费可用!ChatGPT 4.0/4o/3.5 镜像 Mirror|免翻直链中文镜像(2024年8月更新)

最新免费可用!ChatGPT 4.0/4o/3.5 镜像 Mirror|免翻直链中文镜像(2024年8月更新)

本篇文章目录|Table of Contents Hide ChatGPT 4.0/4o/3.5 镜像站列表ChatGPT镜像更新历史什么是Cha...

最新可用!2024年Google谷歌镜像,Google学术镜像站(8月更新)

最新可用!2024年Google谷歌镜像,Google学术镜像站(8月更新)

本篇文章目录|Table of Contents Hide Google谷歌镜像-直接访问谷歌搜索01.Google谷歌搜索最新镜像入口02.Go...

发表评论

访客

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