前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >记一次 iOS 环境 H5 页面突然白屏

记一次 iOS 环境 H5 页面突然白屏

原创
作者头像
除除
发布2024-10-27 20:55:11
发布2024-10-27 20:55:11
2170
举报

背景

在 202x 年的某一天,接到用户反馈,某个页面在新版本的 iOS 系统中突然无法打开,呈现白屏状态。

排查

接到反馈后,立即分析了前端日志,定位到此问题只会出现在新系统版本的 iOS 用户中。

进一步分析前端错误日志,发现错误源自一个全局变量的冲突:新版 iOS 系统的 Safari 浏览器中新增了一个全局变量 browser,而旧项目中也使用了同名变量来挂载一些全局可用的值。这一命名冲突导致了JavaScript 运行时错误,从而引发了页面白屏。

Safari 控制台:

Safari 控制台
Safari 控制台

Chrome 控制台:

Chrome 控制台
Chrome 控制台

解决方案

临时修复

为了快速恢复用户体验,首先在代码中做了一个临时的热修复。通过检测 iOS 版本,暂时兼容了对 browser 变量的使用,从而避免冲突。

下次迭代

针对使用变量 browser 的地方进行小规模代码重构,将项目中使用的 browser 变量重命名为一个不太可能引发冲突的名称:<业务名称>_<模块>_BROWSER,并更新了所有相关的代码引用。

预防措施

避免关键字

意识到命名冲突的潜在风险,加强了代码审查流程,确保在代码中避免使用可能与系统保留关键字冲突的变量名称,并且制定一个全局变量命名规范。

持续监控

为了及时发现和响应类似问题,在项目中引入了更完善的监控机制。并且在系统进行大更新的节点,重点关注。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 排查
  • 解决方案
    • 临时修复
    • 下次迭代
  • 预防措施
    • 避免关键字
    • 持续监控
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档