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

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

1年前 (2024-08-25)admin网络科技86

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

In terms of equipment acquisition, what improvements can be made?

In terms of equipment acquisition, what improvements can be made?

In terms of equipment acquisition in World of Warcraft, Players often discuss some areas that can be improved to enhance the gaming experien...

What impact will streaming services have on the future development of the traditional television ind

What impact will streaming services have on the future development of the traditional television ind

The rise of Streaming Services has undoubtedly had a profound impact on the future development of the traditional TV industry. Here are some...

断舍离极简生活:本地闲置群,一个比闲鱼更高效的出闲置渠道

断舍离极简生活:本地闲置群,一个比闲鱼更高效的出闲置渠道

虽然我自称为“卖闲置小能手”,但事实上,还是有一些闲置,对我来说很难出手。比如,材质特殊的罐子、花瓶等物。本身的价值可能也就几十块,卖二手折价后就更低了,寄快递吧,除了顺丰大多数快递都没法邮寄。而顺丰价格又太贵,有时候邮费比东西本身还贵。直接扔了?九新的东西,属实有点可惜。有天去面包店购物,店员告诉...

WordPress如何将管理员用户主页改为网站首页

WordPress如何将管理员用户主页改为网站首页

最近在做 WordPress 站群的一些项目测试,主题在调用作者的时候就会链接到作者主页,加上很多时候 WordPress 网站就只会使用一个账户来发布文章,虽然可以通过修改主题代码的方式将作者的链接直接链接到网站首页,但是作为一个优雅的 WordPress 开发者来说,肯定是不会轻易动主题源码的,...

WordPress标签实现追加自定义链接

WordPress标签实现追加自定义链接

WordPress 标签的用处说多不多,说少不少,其中利用 WordPress 标签做聚合页面优化是一种搜索引擎很喜欢的方式,或者说很多搜索引擎相比正文页面而言更喜欢抓取和收录标签页面,其次对于 WordPress 标签的作用就是用于文章关键词调用以及文章内链。那么今天子凡我我将利用几行代码来实现给...

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

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

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

发表评论

访客

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