没用。html标准中不存在results全局属性,它既非input元素的合法属性,也非type="search"的专用属性;现代浏览器全部忽略该属性,仅旧版webkit曾支持但已移除。

search input 的 results 属性到底有没有用?
没用。HTML 标准里压根没有 results 这个全局属性,更不是 <input type="search"> 的合法属性。你看到某些文档或代码里写了 results="5",那基本是混淆了旧版 WebKit(比如 Safari 5–6)的私有实验性行为,早已被移除,现代浏览器(Chrome/Firefox/Safari/Edge)全部忽略它。
为什么搜索框不显示历史图标?真正起作用的是什么?
历史图标(带下拉箭头或“×”清除按钮的小图标)是否出现,取决于两个条件:浏览器是否启用表单自动完成(autocomplete),以及该 input 是否关联了 <datalist></datalist> 或系统级搜索历史(如地址栏行为)。纯靠 type="search" 不会自动触发历史下拉。
-
autocomplete="on"(默认值)是前提,但仅此不够 - 必须搭配
list属性指向一个<datalist></datalist>,才能显示可点击的下拉候选区 - 用户真实输入过、且浏览器保存了该
name或id对应的历史记录,部分浏览器(如 Chrome)才可能在聚焦时显示灰色历史项(非results控制)
怎么让 search 输入框显示可交互的历史下拉?
唯一可靠方式是显式绑定 <datalist></datalist>。注意:它显示的是开发者预设或动态注入的选项,不是浏览器自动记忆的搜索词(后者不可控、不跨域、无 API 暴露)。
<input type="search" name="q" list="search-history"><datalist id="search-history"><option value="react hooks"></option> <option value="css grid"></option> <option value="fetch api"></option></datalist>
关键点:
-
list属性值必须严格匹配<datalist></datalist>的id -
<option></option>只能有value,不能有子文本或label - 想动态更新历史?用 JS 操作
datalist的innerHTML或appendChild,但需注意重复添加会堆积 - Chrome 中若想触发「本地搜索历史」下拉(灰色条目),得确保
name值稳定(如始终为"q"),且用户确实在该域名下搜过——但这无法编程控制或清空
兼容性和常见坑
<datalist></datalist> 在所有现代浏览器中支持良好,但行为细节差异大:
- Safari 直到 12.1 才支持
<datalist></datalist>用于type="search",旧版 Safari 完全不显示下拉 - Firefox 默认不显示下拉箭头图标,只在聚焦+有匹配项时弹出菜单;Chrome 会显示小向下箭头(即使无
datalist) - 移动端(iOS Safari / Android Chrome)对
datalist支持弱,常静默忽略,历史图标也不出现 - 别依赖
results—— 它不会报错,但也不会做任何事,只是白写
真要跨端一致的历史体验,得自己实现下拉面板(用 div + input 事件监听),而不是指望原生 results 或 datalist。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











