问题描述
开启「知乎美化」的“宽屏显示 → 搜索页、话题页、圈子”后,如果从知乎推荐页使用顶部搜索框进入搜索结果页,首次进入时宽屏样式没有生效:
- 右侧搜索推荐栏仍然显示;
- 搜索结果主栏保持原来的窄宽度;
- 刷新同一个搜索页面后,右侧栏消失,主栏宽度恢复正常。
直接打开或刷新搜索页时没有问题,仅在从推荐页通过站内搜索首次进入时复现。
测试环境:
- Chrome + Tampermonkey
- 知乎美化 v1.5.20
- 同时启用了知乎增强 v2.3.29
- 搜索页宽屏显示已开启
复现步骤:
- 打开知乎推荐页;
- 使用顶部搜索框进行任意搜索;
- 首次进入搜索结果页,观察右侧栏仍然存在;
- 刷新当前搜索页面;
- 右侧栏被隐藏,宽屏显示恢复正常。
初步分析可能与知乎的 SPA 路由跳转有关。
当前脚本启动时只调用一次 addStyle(),并且只有启动时满足 location.pathname === '/search',才会添加 style_widescreenDisplaySearch:
https://github.com/XIU2/UserScript/blob/master/Zhihu-Beautification.user.js
从推荐页进入搜索页时没有发生完整页面刷新,因此脚本不会重新执行,搜索页宽屏样式也没有被补充;刷新后脚本直接在 /search 下启动,所以显示正常。
同时启用的「知乎增强」虽然会处理站内路由变化,但不会重新触发「知乎美化」的 addStyle()。
建议可以考虑:
- 开启搜索页宽屏功能后,始终注入搜索页专用选择器;这些选择器在其他页面不存在,影响范围相对有限;
- 或监听
urlchange / History API,在路由变化后重新同步当前页面对应的宽屏样式。
问题描述
开启「知乎美化」的“宽屏显示 → 搜索页、话题页、圈子”后,如果从知乎推荐页使用顶部搜索框进入搜索结果页,首次进入时宽屏样式没有生效:
直接打开或刷新搜索页时没有问题,仅在从推荐页通过站内搜索首次进入时复现。
测试环境:
复现步骤:
初步分析可能与知乎的 SPA 路由跳转有关。
当前脚本启动时只调用一次
addStyle(),并且只有启动时满足location.pathname === '/search',才会添加style_widescreenDisplaySearch:https://github.com/XIU2/UserScript/blob/master/Zhihu-Beautification.user.js
从推荐页进入搜索页时没有发生完整页面刷新,因此脚本不会重新执行,搜索页宽屏样式也没有被补充;刷新后脚本直接在
/search下启动,所以显示正常。同时启用的「知乎增强」虽然会处理站内路由变化,但不会重新触发「知乎美化」的
addStyle()。建议可以考虑:
urlchange/ History API,在路由变化后重新同步当前页面对应的宽屏样式。