是,但仅影响未显式设置target的和元素;显式声明target的链接不受影响,且base不自动添加rel="noopener noreferrer",存在安全风险。

base target="_blank" 会把所有链接都新窗口打开吗
会,但只影响那些没显式写 target 的 和 元素。一旦某个 自己写了 target="_self", 就完全不起作用。
常见误判是:加了 后,发现锚点链接(href="#section")、空链接(href="#")、javascript:void(0) 也跳新页——这不是 bug,是规范行为:只要没显式声明 target,就走 的默认值。
-
必须放在最前面,且整个页面只能有一个 - 它也会影响
提交,比如登录表单提交后跳新标签页,用户可能以为操作失败 -
的name属性若与target值匹配,也会被干扰
base target="_blank" 不自动加 rel="noopener noreferrer" 是真问题
浏览器不会因为用了 就给每个链接补上 rel="noopener noreferrer"。这意味着所有被它影响的链接,都存在 window.opener 安全风险:新开页能调用 opener.location.replace() 劫持原页,或读取历史、触发卡顿。
你不能指望 帮你解决安全问题,它只管跳转位置,不管上下文隔离。
把任意文章或文档内容转换成精美的全屏翻页 HTML 演示文件(幻灯片风格)。当用户发来一篇文章、文档链接、Markdown 内容、或粘贴的文本,并且希望生成演示用的 HTML 时触发。支持任意内容来源:iWiki 链接、KM 链接、本地文件路径、直接粘贴的文本。生成的 HTML 文件保存到本地工作区,并通过企微直接发送给用户。触发词示例:帮我把这篇文章做成PPT、转成演示文档、生成HTML幻灯片、做个演示、转成可以演示的格式、article to deck、make a slide。
- 必须手动给每个实际生效的链接补
rel="noopener noreferrer",不代劳 - 如果页面有动态生成的链接(比如 JS 拼的
),它们不受影响,但也容易漏掉rel - 旧版 Safari 对
rel="noopener"支持不全,单独写rel="noreferrer"无效,必须配对
为什么多数项目不该用 base target 控制新窗
表面省事,实则边界模糊、副作用难控。真正难处理的不是怎么设,而是“谁会被影响、谁会被漏掉、谁因此变慢”。
-
在 Shadow DOM 或 Web Components 中作用范围受限,常失效 - SSR 渲染时无法按设备/上下文(如是否在 iframe 内)动态切换,不如服务端判断后直出属性
- 测试成本高:要专门检查锚点、空链接、表单、JS 链接是否被意外带上新窗口行为
- 更可控的做法是用 CSS 类(如
class="external")+ JS 批量加target和rel,或模板引擎预渲染
如果非要用 base target,至少做三件事
别只写 就完事。最小安全闭环必须包含:
- 确认
在第一行,且无重复 - 人工或脚本扫描所有未显式设
target的,确保它们确实需要新窗;内部导航链接建议显式写target="_self" - 对所有实际被
影响的链接,补上rel="noopener noreferrer"—— 这步不能省,也没有替代方案
真正容易被忽略的是:哪怕你只改了一个 标签,也要重新验证表单提交、锚点滚动、iframe 加载、移动端 WebView 行为——这些地方不会报错,但会悄悄坏掉。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










