当前位置: 首页 > news >正文

js白屏检测与白屏的修正机制

白屏检测的实现

关键点采样对比,利用的就是 document.elementsFromPoint(x,y) (https://developer.mozilla.org/en-US/docs/Web/API/Document/elementsFromPoint)这个函数返回特定坐标点下的HTML元素数组。

在各种社区、文章中其实已经有不少介绍利用这个API完成白屏检测的文章,方案很多,例如:【垂直选取】、【交叉选取】、【垂直交叉选取】、【页面网格深度采集】等等。

mirror选择了比较普遍的垂直选取。大致的原因是我们觉得白屏的检测在确保准确度、复杂度性能消耗之间我们需要一个平衡点。 垂直选取的策略适用于大多数业务。

图片

垂直选取示意

for (let i=1; i<=9;i+=2){    const xElements = document.elementsFromPoint((window.innerWidth * i) / 10, _global.innerHeight / 2)    const yElements = document.elementsFromPoint(_window.innerWidth / 2, (_global.innerHeight * i) / 10)}

获取垂直选点的代码示例

从垂直可以延伸出上文所说的交叉、垂直交叉等等方案,本质是一样的,区别在于页面获取更多的点位,返回的是这个点的dom层级,经过一些列的遍历后可以寻找是否有对应的class或者id、标签等等。

页面网格深度采集更类似于把整体页面分为多个相同的,利用DOM层级深度来显示页面的复杂度和某个模块是否正常运行。

图片

这个检测的功能更适用于一些特定的场景和复杂业务的特殊定制化需求,我们也是有别的团队的同学基于mirror给出的生命周期插件入口完成了拓展功能。

白屏的修正机制

在第一次检测白屏的情况出现时,浏览器的整体渲染可能还没有完成,特别是移动端页面。用户糟糕的网络环境、关键JS资源或接口还没有返回的情况都是导致页面白屏的可能原因。这时我们就需要一个轮询检测机制,去检测白屏的正确性。这个就是修正机制

图片

修正机制的大致示意图

相关文章:

  • Pomelo知识框架
  • fiftyone-dataset使用基础
  • 猫眼浏览器:简约安全,极速浏览
  • java基础:异常体系
  • 2025五一杭州西湖三天游
  • Linux - 基础指令
  • 没经过我同意,flink window就把数据存到state里的了?
  • Linux基础 -- SSH 流式烧录与压缩传输笔记
  • Windows避坑部署CosyVoice多语言大语言模型
  • elasticdump备份恢复
  • 内存泄漏系列专题分析之十四:高通相机CamX ION/dmabuf内存管理机制ImageBuffer之GrallocBuffer原理
  • 大二java第一面小厂(挂)
  • Beats
  • IP地址查询助力业务增长
  • Cancer Discov (IF:30.6)|中山一院于君/匡铭合作解析瘤内微生物的异质性和促肿瘤机制
  • 第一章:人工智能概述
  • 解放双手的鼠标自动点击软件
  • Android系统时间设置
  • 记录 QT 在liunx 下 QFileDialog 类调用问题 ()Linux下QFileDialog没反应)
  • WebGL知识框架
  • 党建评:对违规宴饮等问题要坚决露头就打
  • 成都警方通报:8岁男孩落水父母下水施救,父亲遇难
  • 上海北外滩开发建设五周年交出亮眼答卷,未来五年有何新目标?
  • 继71路之后,上海中心城区将迎来第二条中运量公交
  • 广东:十年后省级水网主骨架全面建成,与国家骨干网互联互通
  • 人民日报访巴西总统卢拉:“巴中关系正处于历史最好时期”