前言
在对接3D可视化的时候,只要页面发生变化,回调就失效了,所以要监听页面变化,添加回调事件。
监听路由变化
这种方式只有路由发生变化后才调用,更合适一点,但是要注意页面加载完毕。
这种方式有时依旧会出现注册的事件消失的问题。
1 | const originalPushState = history.pushState |
监听页面变化
这种方式页面只要有微小的变动就会触发回调,触发频率较高,并且比较浪费性能。
1 | document.addEventListener('DOMContentLoaded', function () { |
注意
直接观察
body并开启subtree: true通常会比较浪费性能,尤其是在复杂页面或动态内容较多的场景下。
定时任务
在对接3D可视化的时候,厂家给的方式是监听body,进行事件的添加,但是这样性能非常不好,监听DOM的性能浪费要比定时任务大多了。
所以最终使用定时任务来实现。
1 | function addUeListener() { |