
当 HTML 链接的 target 属性设为 "new" 时,浏览器会复用或创建一个名为 "new" 的命名窗口/标签页,而非始终新建空白标签;而正确值应为 "_blank",确保每次点击都打开全新、独立的标签页并正确加载内容。
当 html 链接的 target 属性设为 "new" 时,浏览器会复用或创建一个名为 "new" 的命名窗口/标签页,而非始终新建空白标签;而正确值应为 "_blank",确保每次点击都打开全新、独立的标签页并正确加载内容。
问题根源在于对 <a></a> 标签 target 属性的误用。你当前的写法:
<code class="html"><a href="https://portal.kmpbrand.com/US/portal/scripts/login.asp" target="new"></a></code>
其中 target="new" 并非标准值——HTML 规范中不存在名为 "new" 的保留关键字。实际上,target 属性若指定为任意非保留字的自定义名称(如 "new"、"myTab"、"xyz"),浏览器会将其视为命名浏览上下文(named browsing context):首次点击时新建同名标签页,后续点击则复用该标签页(类似 target="myFrame" 复用 iframe)。
这正是导致“点击空白、右键新开却正常”的关键原因:
- 第一次点击
target="new"→ 浏览器新建一个名为"new"的标签页,加载目标 URL; - 若页面因重定向、JavaScript 跳转、或服务端逻辑(如登录跳转失败)未能完成渲染,该标签页可能停留在空白状态;
- 后续点击同一
target="new"链接 → 浏览器复用已有"new"标签页,直接导航到新 URL,但若前次状态异常(如 JS 错误阻塞、缓存干扰),可能导致白屏且无刷新; - 而右键“在新标签页中打开”绕过了
target机制,强制启用全新的、无命名的上下文,因此能正常加载。
✅ 正确解法:使用标准关键词 "_blank":
<code class="html"><a href="https://portal.kmpbrand.com/US/portal/scripts/login.asp" target="_blank" rel="noopener noreferrer"></a></code>
✅
target="_blank":明确指示浏览器始终新建一个匿名标签页,不复用、不共享上下文,避免状态污染。
✅rel="noopener noreferrer":安全最佳实践(防止新页面通过window.opener访问原页面、提升性能并避免钓鱼风险),尤其在target="_blank"时必须添加。
⚠️ 注意事项:
- 不要使用
target="new"、target="blank"等非标准值,它们属于命名上下文,行为不可控; - 所有
target="_blank"链接均应配对rel="noopener noreferrer"(现代框架如 React/Vue 的链接组件通常默认包含); - 若需兼容旧版 IE8 及更早版本(已不推荐),
rel="noopener"可省略(IE 不支持),但noreferrer在 IE 中亦无效,故仅需确保target="_blank"正确即可。
总结:target 属性的有效值仅有五个标准关键词:_self、_blank、_parent、_top 和 _framename(用于 iframe)。任何其他字符串均为命名上下文,易引发复用异常。将 "new" 替换为 "_blank" 并添加 rel 属性,即可彻底解决空白页问题,同时提升安全性与可维护性。










