本文介绍了两种实现外部链接在新窗口打开的方法:前端使用jQuery遍历页面链接,通过域名比较识别外部链接并添加target和rel属性;后端使用PHP正则匹配内容中的链接,解析域名后为外部链接添加相应属性。两种方案均能有效处理外部链接跳转并增强安全性。
使用微信扫码登录 赞助我一杯咖啡欢迎来到好嘢科技
我们是一家专注于数字化解决方案的技术团队,致力于为中小企业提供高效、可靠的网站建设、SEO优化和电商系统开发服务。我们的使命是通过技术赋能,让每一个客户都能在互联网时代中脱颖而出。
无论您是刚起步的创业者,还是希望升级现有平台的企业主,我们都能为您量身定制最合适的方案。欢迎联系我们,开启您的数字化旅程。
前端JS方法,
遍历所有连接,给连接添加属性,让它在新窗口打开。
jQuery(document).ready(function($) {
// 获取当前域名
var currentDomain = window.location.hostname;
// 选择所有链接
$('a').each(function() {
var href = $(this).attr('href');
// 确保链接存在且不是空链接、锚点链接或javascript链接
if (href && href !== '#' && !href.startsWith('javascript:') && !href.startsWith('tel:') && !href.startsWith('mailto:')) {
try {
// 尝试创建URL对象来解析链接
var url = new URL(href, window.location.href);
// 检查链接是否为外部链接(不包含当前域名)
if (url.hostname !== currentDomain && url.hostname !== '') {
// 为外部链接添加target和rel属性
$(this).attr('target', '_blank');
$(this).attr('rel', 'noopener noreferrer');
}
} catch(e) {
// 如果URL解析失败(可能是相对路径),则忽略
console.log('URL解析失败:', href);
}
}
});
});
</script>
- 域名检测:获取当前网站的域名
- 链接遍历:使用jQuery遍历页面上的所有
<a>
标签 - 链接过滤:排除以下类型的链接:
- 空链接或
#
锚点链接 javascript:
协议链接tel:
电话链接mailto:
邮件链接
- 空链接或
- 外部链接判断:
- 使用
URL
对象解析链接 - 比较链接域名与当前网站域名
- 如果域名不同,则认为是外部链接
- 使用
- 属性设置:为外部链接添加:
target="_blank"
:在新窗口打开rel="noopener noreferrer"
:增强安全性,防止新窗口访问原窗口
🔒 付费内容
支付 0.1元 即可查看完整内容
正在加载二维码...
📱 请使用微信扫描二维码完成支付
支付成功后页面将自动刷新
⏳ 等待支付中...
订单号:WX202510212059122550
Last Updated: