Typecho 文档:给页面外部链接使用新窗口打开功能
适用程序:Typecho
程序版本:1.2.1
文档作者:Lopwon
作者博客:Lopwon.com
发布页面:Lopwon.com/attachment/3778/
许可方式:CC BY-NC-SA
注意:此文档源于作者在博客改造中的一些经验总结,转载还请署名。
敬告:此文档操作涉及程序核心文件的修改,作者不对你在使用中产生的任何问题造成的不良后果,承担责任。
文档说明
Typecho 默认在当前窗口打开链接页面,除了可以通过修改程序文件,或是主题文件里,在输出内容时,对链接进行替换,等等方式实现新窗口打开链接外,还可以使用以下方法。
使用方法
A 涉及文件
usr/themes/***/footer.php
B 改造文件
作用:自定义页面链接新窗口打开。
1. 打开文件 usr/themes/***/footer.php 或主题页脚文件,在页末添加以下代码(留意注释,以及按需修改):
<script>
$(document).ready(function() { // 页面加载完成后执行代码
var keywords = ['yoursite.com', 'yourdomain.com']; // 未包含关键词数组的链接,使用新窗口打开(修改为自己的域名)
$('a[href]').each(function() { // 查找页面中所有具有 href 属性的 <a> 标签
var href = $(this).attr('href'); // 获取当前 <a> 标签的 href 属性值
var containsKeyword = keywords.some(function(keyword) { // 使用 Array.prototype.some() 方法检查 href 是否包含数组中的任何一个关键词
return href.indexOf(keyword) !== -1; // 如果 href 中包含关键词,返回 true
});
if (!containsKeyword) { // 如果 href 不包含任何关键词,则为该 <a> 标签添加 target 和 rel 属性
$(this).attr('target', '_blank'); // 添加 target 属性,使链接在新窗口打开
$(this).attr('rel', 'external nofollow noopener noreferrer'); // 添加 rel 属性,以增强安全性和 SEO
}
});
});
</script>
2. 如果你在用的主题未引入 jQuery 库,则使用以下原生 JS 方式:
<script>
document.addEventListener('DOMContentLoaded', function() { // 页面加载完成后执行代码
var keywords = ['yoursite.com', 'yourdomain.com']; // 未包含关键词数组的链接,使用新窗口打开(修改为自己的域名)
var links = document.querySelectorAll('a[href]'); // 查找页面中所有具有 href 属性的 <a> 标签
links.forEach(function(link) {
var href = link.getAttribute('href'); // 获取当前 <a> 标签的 href 属性值
var containsKeyword = keywords.some(function(keyword) { // 使用 Array.prototype.some() 方法检查 href 是否包含数组中的任何一个关键词
return href.indexOf(keyword) !== -1; // 如果 href 中包含关键词,返回 true
});
if (!containsKeyword) { // 如果 href 不包含任何关键词,则为该 <a> 标签添加 target 和 rel 属性
link.setAttribute('target', '_blank'); // 添加 target 属性,使链接在新窗口打开
link.setAttribute('rel', 'external nofollow noopener noreferrer'); // 添加 rel 属性,以增强安全性和 SEO
}
});
});
</script>
至此,已完成给页面链接自定义使用新窗口打开功能,未包含关键词数组的链接,则使用新窗口打开。