target="_search"不是html标准值,浏览器均不识别,会当作无效窗口名并回退到_self,控制台报“invalid target name”警告;它与input type="search"的原生搜索能力无关,正确替代方案是target="_blank"配rel="noopener noreferrer"或匹配存在的iframe name。

target="_search"根本不会触发任何特殊机制
它不是标准值,浏览器完全不识别。Chrome、Firefox、Safari、Edge 都把它当作文本窗口名处理,找不到同名窗口就 fallback 到 _self,即当前标签页打开。控制台会报 Invalid target name 警告,但页面照常跳转——只是你预期的“搜索窗格”行为根本不存在。
为什么有人以为_target="_search"_能用
这个误解主要来自三类混淆:
- 把
input type="search"的语义能力错当成target属性的功能 - 误信已废弃多年的 IE5–8 实验性支持(
_search在 HTML5 中被明确标注为 obsolete) - 看到某些 CMS 或框架渲染出
<search></search>标签,误以为是 HTML 原生支持(实际是 JS 自定义组件,和target无关)
真正影响搜索体验的是 input type="search"
input type="search" 才是触发原生搜索行为的关键:
- iOS/Safari 键盘显示「搜索」回车键,而非「前往」
- 桌面 Safari 自动添加清除按钮(×)
- Chrome 启用搜索历史下拉建议(需配合
autocomplete="search") - 屏幕阅读器播报“搜索编辑框”,提升可访问性
这些能力跟 target 属性毫无关系,加在 <a></a> 或 <form></form> 上的 target="_search" 不会产生任何效果。
该用什么代替 _search
如果你希望用户在新页中执行搜索,正确写法只有:
-
target="_blank"+rel="noopener noreferrer"(安全前提) - 或显式指定 iframe 名(如
target="searchFrame"),前提是页面中存在<iframe name="searchFrame"></iframe>
别写 target="_new"、target="_window"、target="search"(缺下划线)——这些全是非标准写法,行为不可预测,且可能绕过 noopener 保护。
最易被忽略的一点:即使你真在旧 IE 里跑通了 target="_search",现代浏览器也已彻底移除该逻辑。依赖它等于在代码里埋一个静默失效的开关。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











