能,但只对相对 URL 生效;base 标签的 target 属性仅作用于未显式指定 target 的相对链接,对绝对 URL、JavaScript 链接、框架路由等无效,且必须置于 head 中且唯一。

base 标签能设置默认 target 吗?能,但只对相对 URL 生效
标签的 target 属性确实可以为页面中所有**未显式指定 target 的相对链接**提供默认跳转行为。但它对绝对 URL(含协议如 https://、// 开头)和 JavaScript 动态生成的链接完全无效。
为什么点击 a 链接还是在当前页打开?常见原因有这些
- 链接是绝对 URL:
外部链接——对它不起作用 - 链接用了
javascript:void(0)或#锚点 —— 这类链接不触发导航,target无意义 -
标签没放在中,或位置靠后(浏览器只读取第一个) - 页面存在多个
,但只有第一个生效,后续被忽略
实际写法与兼容性注意点
正确写法必须放在 内,且仅需一个:
关键细节:
-
href和target可单独使用,互不影响;但若只设target,href必须存在(可为空字符串,但不推荐) - 设
target="_blank"时,**强烈建议同时加rel="noopener"到每个上**,否则存在安全风险(新页可通过window.opener访问原页) - Firefox 和 Safari 对
的支持较严格:如果链接是相对路径但最终解析为跨域地址,target可能被忽略 - Vue/React 等框架中,路由链接(如
)完全绕过,它的target由框架自身控制
更可靠的做法:用 JavaScript 补全或直接写死
如果业务要求「所有外链都新窗口」,依赖 容易漏掉绝对 URL。更可控的方式是:
立即学习“前端免费学习笔记(深入)”;
- 给外链统一加 class:
- 用脚本补
target和rel:
document.querySelectorAll('a.external').forEach(el => {
el.target = '_blank';
el.rel = 'noopener';
});
或者服务端渲染时直接输出完整属性 —— 比 更明确、更少意外。
真正容易被忽略的是:base 的 target 不是“全局强制”,而是“相对链接的 fallback”。一旦你混用相对/绝对 URL,行为就不可预测。











