如何排查和解决UC浏览器引入的历史记录拦截问题
在日常的前端开发中,我们常常会遇到各种浏览器兼容性问题。有时,问题只在某个特定的浏览器中出现,而在其他浏览器中却表现正常。最近,我在一个项目中就遇到了这样一个令人震惊的情况:UC浏览器有时会导致我们在历史路由跳转时出现异常,具体表现为点击返回按钮时页面没有反应。经过深入排查,我发现UC浏览器通过外部脚本拦截了history.pushState
和history.forward
方法,严重影响了我们的页面路由操作。
问题描述
某天,我的测试人员反馈说,系统在UC浏览器中出现了奇怪的行为:点击页面的返回按钮后,页面没有反应。这个问题只出现在UC浏览器中,Chrome、Safari、内置浏览器等都没有问题。测试人员提供的信息非常简洁:页面跳转正常,但点击返回后,页面没有反应。
初步排查并未发现明显的错误,控制台中没有报错,页面似乎完全没有问题。为了排除可能的问题,我尝试了刷新页面和清除缓存,但问题依旧。然后,我决定进一步检查请求和脚本,结果才发现了UC浏览器“下毒”的幕后黑手——一个外部脚本。
逐步排查:发现UC浏览器的内置脚本
-
排查请求