默认在当前窗口打开,无需设置;若需显式指定,必须写 target="_self"(带下划线),写成 "self" 会被当作自定义窗口名而失效。

怎样让 <a></a> 标签在当前窗口打开链接
默认情况下,<a></a> 标签点击后就在当前窗口跳转,根本不需要额外设置。只有当你之前设过 target="_blank" 或其他值,才需要显式改回当前窗口行为。
要确保在当前窗口打开,只需把 target 属性设为 "_self"(注意是下划线开头,不是 "self"):
<a href="https://example.com" target="_self">当前窗口打开</a>
-
target="_self"是 HTML 规范中明确指定“在当前浏览上下文(即当前 tab/window)加载”的值 - 省略
target属性效果完全等同于target="_self",所以多数情况直接不写更干净 - 如果页面嵌在
<iframe></iframe>里,_self指的是该 iframe 自身,不是最外层窗口;此时要用target="_top"才能跳出 iframe
为什么设成 "self"(没下划线)会失效
浏览器会把不带下划线的 target="self" 当作一个**命名的浏览上下文**(比如某个 iframe 的 name),而不是关键字。它会尝试找名为 "self" 的 frame,找不到就新开一个 tab —— 这和你想要的效果完全相反。
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
- 错误写法:
<a target="self"></a>→ 实际可能新开窗口或报错 fallback - 正确写法:
<a target="_self"></a>或干脆不写target - 所有标准关键字(
_self、_blank、_parent、_top)都必须带前导下划线
在 JavaScript 动态设置时要注意什么
用 JS 改 target 属性,同样要严格区分字符串值:
linkEl.target = "_self"; // ✅ 正确<br>linkEl.target = "self"; // ❌ 等效于指向名为 "self" 的 frame
- 通过
setAttribute("target", "_self")也必须传"_self" - 如果元素原本有
target="_blank",仅用removeAttribute("target")就足够还原默认行为,无需再设值 - 在 Shadow DOM 或某些框架(如 Vue 的
v-html)里动态插入含target的 HTML,需确认框架未过滤或重写该属性
兼容性和特殊场景下的表现
target="_self" 在所有现代浏览器和 IE9+ 都可靠支持,但有两个容易被忽略的边界:
- 在 PWA(Progressive Web App)中以 standalone 模式运行时,
_self仍作用于当前 PWA 容器,不会意外跳出 App - 如果页面启用了
rel="noopener"(常和target="_blank"一起用),它对_self无影响,也不需要加 —— 因为不存在跨上下文访问风险 - 部分企业内网环境或老版本 WebView(如 Android 4.4 System WebView)对
target解析较松散,建议始终用标准写法,避免依赖隐式行为
真正要小心的不是怎么写 _self,而是别在不需要的时候乱加 target 属性——多一次字符串匹配、多一个潜在的 iframe 匹配逻辑,还可能干扰可访问性工具对链接意图的判断。

















