工作原理
intent-link 会观察用户在页面上的移动,并估计用户正接近哪个可见目标。当信号足够强时,它会调用该目标的 onIntent 函数。
1 · 观察移动
在桌面端,它读取指针移动;在触摸设备上,它读取滚动。只有用户交互后才会启动,移动停止时会再次休眠。
2 · 判断目标
引擎会将用户的移动与当前可见的意图目标进行比较。视口外的目标不会参与计算。
3 · 执行工作
当某个目标足够可能被选择时,它的 onIntent 回调会执行一次。用户移开后再靠近时,可以再次执行。
桌面端与移动端
- 在桌面端,引擎跟踪指针的二维移动。
- 在移动端,引擎跟踪垂直滚动,并在第一次滚动时启用。
- 隐藏或离屏的目标会被忽略,包括被响应式 CSS 隐藏的元素。
物理学思路
可以把每个目标想成一个小小的引力井。移动产生动能,与目标的距离产生势能。快速的指针或滚动仍有前进的动力,而靠近目标时的缓慢移动更像正在停驻。引擎使用类似热力学的规则,把这些低能量的落点视为更可能的选择。
浏览器的移动数据会有细小跳动和误差。卡尔曼滤波器会在物理计算前平滑这些噪声。简单来说,它帮助区分有意的移动和不稳定的测量值。这些都发生在库内部,应用只会接触到 onIntent。
点击阅读研究论文。在 ACM 正式发布前,这是一个占位链接。