在不损害 CLS 指标的情况下支持 A/B 测试

问题描述

我们是向客户网站添加组件/用户界面元素的第 3 方供应商。我们有时会在运行时根据上下文参数或作为 A/B 测试的一部分隐藏/更改此容器的大小。

在我们拥有所有上下文数据之前,网站所有者不可能知道元素的最终大小,因此无法在服务器端设置高度。

为了尽量减少对 CLS 的影响,网站所有者可以为容器设置初始高度,但这有两个问题:

  1. 它并没有完全消除 CLS,只是稍微减少了它
  2. 它会造成糟糕的用户体验,页面加载时出现空白,然后消失/改变高度

消除此类元素的 CLS 影响的推荐方法是什么?

解决方法

我们有时会根据上下文参数或作为 A/B 测试的一部分在运行时隐藏/更改此容器的大小。

任何时候您在运行时更改内容的大小,都有可能会移动页面上的其他内容,这可能会对使用体验产生负面影响。在您花费大量时间尝试为您的用例“修复”CLS 之前,您可能需要考虑您的用例是否为用户提供了正确的体验。

如果您无法更改系统,而只想尽量减少其对 CLS 的影响,这里有一些选项:

  • 仅在 用户输入后才折叠区域(可能要求用户关闭容器,或者等待页面重新布局的其他预期原因)。
  • 仅当所有受影响的内容都在视口之外时才折叠。听起来你已经为低于倍数这样做了吗?对于首屏内容,您可以同时移除内容并以完全相同的量调整滚动位置。

而且,也许一些更广泛的替代方案是:

  • 不要折叠该区域,而是将其替换为一些不会失败的默认内容。
  • 可能不是一个选项,但也许有办法延迟显示内容,直到您知道是否需要条件内容?这取决于加载内容的延迟时间,如果您无法快速回答成功测试,则会对加载性能产生负面影响...

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...