target="_blank"需配合href和rel="noopener"才有效,否则可能失效或存在安全风险;其他target值兼容性差,window.open需用户触发且受弹窗拦截。

target="_blank" 为什么点开没反应
不是所有 @#@#@#@#@#@#@#@#@#@0,不能只写 target 没写 href
href 是空字符串、# 或 javascript:void(0),多数浏览器会忽略 target
target,需用 JavaScript 模拟:window.open("url", "_blank")
target="_blank" 在严格 CSP 策略下可能被拦截,检查控制台是否有 Refused to open a window... 错误target="_blank" 安全警告怎么绕过
现代浏览器对 target="_blank" 自动加上 rel="noopener" 才安全,否则新页面可通过 window.opener 访问原页面上下文,造成安全隐患。
这不是“绕过”的问题,而是必须补上:
- 正确写法:
@#@#@#@#@#@#@#@#@#@1 - 如果需要新页面也能操作原页面(极少见),改用
rel="opener",但会放弃安全保护 - 不要只写
rel="noreferrer":它会隐藏Referer,但不解决window.opener泄露问题 - Vue/React 中动态渲染链接时,容易漏掉
rel,建议封装成组件统一处理
除了 _blank,还有哪些合法 target 值
target 不只是 "_blank",但可用值非常有限,且兼容性差异大。
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
-
"_self"(默认):在当前标签页打开,显式写出来主要用于覆盖父级<base target> -
"_parent"和"_top":主要用在 iframe 场景,前者跳到父框架,后者跳出所有 iframe 到顶层窗口 - 自定义名字如
"myWindow":可以复用已有窗口,但只有同源页面能控制;跨域时行为不可靠,Chrome 92+ 已限制重用逻辑 -
"_blank"是唯一广泛支持、语义明确、无兼容风险的新窗口方式
JavaScript 调用 window.open 替代 target 的坑
当 target 不可靠(比如表单提交、按钮点击、需要传参)时,window.open 更可控,但也更易出错。
- 必须用户主动触发(如 click 事件内),否则会被浏览器弹窗拦截:
setTimeout(() => window.open(...), 100)就不算“用户触发” - 第二个参数是窗口名,写
"_blank"并不等价于 HTML 的target="_blank",它只是告诉浏览器“新开一个匿名窗口”,不是强制新标签页 - 第三个参数是窗口特征(如
width=600,height=400),但 Chrome 88+ 忽略大部分尺寸参数,仅保留noopener类安全选项 - 返回值是
window对象,可用于后续通信(同源前提下),但别忘了检查是否为null(被拦截时返回null)
真正麻烦的不是怎么写 target,而是得同时考虑浏览器策略、WebView 兼容、安全限制和用户交互时机——漏掉任一环,新窗口就可能打不开,或开了却埋下漏洞。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










