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