🔍 修复 Algolia 搜索框在 Safari 下关闭后自动滚动的问题

TL;DR: Algolia 的 docsearch.js 在 Safari 下可能导致关闭搜索框后页面自动滚动到底部。通过在 HTML 的 <body> 底部添加一段含固定位置输入框的代码 (<div class="fixed"><input type="text" /></div>),可有效解决此问题。

问题描述

Algolia 是一家提供外部托管搜索引擎服务的公司,广泛应用于技术博客、开源项目等作为站内搜索解决方案。特别是其免费的服务计划,吸引了大量编程博主和开发者的采用。

然而,当使用官方提供的 docsearch.js 构建搜索框时,在 Safari 浏览器中可能会遇到以下问题: 用户关闭搜索框后,页面会自动滚动到底部,严重影响用户体验。

以下视频展示了问题现象:

解决方案

在我的博客中,我长期受到该问题的困扰。经过多次尝试,偶然发现 GitHub 讨论daolf 提供的一段代码,虽然连他本人也不清楚原理,但确实能有效解决问题。

只需将以下代码添加到 HTML 文件的 <body> 底部即可:

HTML
<!-- Magic Fix:修复 Safari 搜索框关闭后页面滚动到底部的问题 --> 
<div class="fixed">
  <input type="text" />
</div>
</body>

实践效果

该代码已成功应用于我的博客,经过实际测试,Safari 下的搜索框异常问题已经完全解决。如果您遇到类似问题,也可以尝试此方法。

为您每周带来有关 Swift 和 SwiftUI 的精选资讯!