折腾记录 | 02 修正淘宝的反人类搜索框

2024.4.7 更新: 淘宝的搜索框现在已经不再有这个问题了.

修正淘宝网页的反人类搜索框

在上一篇关于 PDF 阅读器的文章之后, 本系列终于迎来了第二篇文章. 然而非常遗憾的是, 这篇文章只是关于淘宝网页的搜索框的. 似乎这个系列写的全是些鸡毛蒜皮的小事啊, 不过这也是笔者性格使然, 属于是没有办法的事. 也许这些鸡毛蒜皮能帮到某个不知名的网友吧.

问题

自十余年前笔者开始上网冲浪以来, 就一直对淘宝的搜索框感到困惑. 笔者认为每一个熟练使用键盘的人都能达成一个共识: 在编辑文本时, 键盘上的 Home 键表示将光标移动到这一行的行首, 而 End 键表示移到行尾.

然而伟大的淘宝的产品经理不这么想, 他们认为他们给出的搜索建议远比用户输入的文字重要, 他们设计了这样的逻辑: 在搜索框中按下 Home 键时, 将搜索框中的文字替换为第一个搜索建议, 按下 End 键时替换为最后一个. 更令人迷惑的是, 光标仍然会按照正常的逻辑移动.

最近笔者冲浪时看到了这个帖子: 淘宝 PC web 搜索输入框对 Home/End 键的特殊处理反人类! - V2EX
, 回复中有人用油猴脚本解决了这一问题, 但并没有提供这个脚本. 笔者于是决定自己尝试解决这一问题, 下文中将给出一种并不优雅的解决方案.

观察

首先对淘宝的网页进行一个观察. 为了方便, 笔者首先观察了 s.taobao.com 这一站点.

利用 F12 的开发者工具, 查看搜索框的监听器中与 keydown 有关的脚本, 找到了下图中的脚本, 在脚本中搜索关键词, 确定了就是它负责实现这个功能. 其中 _getNextEnabledHighlighted 函数就是切换搜索建议的高亮, 并且修改搜索框的函数.

通过在这个函数中打断点, 笔者发现按下 Home 键时, 在 s.taobao.com 中, _getNextEnabledHighlighted 被下图中的这个脚本的这一行调用, 而在 taobao.com_getNextEnabledHighlighted 被上图中选中的部分调用.

解决方案

笔者本想尝试用油猴脚本来屏蔽这个功能, 但是折腾了一个小时之后发现这似乎不是现学现卖就能很容易实现的. 然后笔者想到是否能直接替换掉这两个脚本中调用 _getNextEnabledHighlighted 的部分, 而这是非常容易实现的.

事实上, Chromium 系浏览器的开发者工具就提供了这一功能. 如下图, 点击 “源代码 - 覆盖 - 选择替代文件夹”, 然后新建一个本地文件夹, 并授予开发者工具访问它的权限.

右击你要覆盖的脚本, 点击 “保存以备替代”, 然后直接在本地的脚本上作修改即可.

但是保存到本地之后代码会失去格式, 全部坍到一行上, 就不方便编辑了. 可以在 [点击 “保存以备替代”] 之前先将脚本的内容全选并复制, 保存后再全部粘贴, 这样就可以得到有格式的代码. 这时候进行需要的修改再 Ctrl+S 保存即可.


折腾记录 | 02 修正淘宝的反人类搜索框
https://ne0.io/posts/3027832042/
作者
Ne0 Wu
发布于
2023年3月22日
许可协议