db-lgtv-focus-engine
Version:
the Best TV focus engine
35 lines (29 loc) • 990 B
JavaScript
export function bindMutationObserver(focus_engine) {
// 防止重复监听
if (focus_engine._observer) {
focus_engine._observer.disconnect();
}
// 选择需要观察变动的节点
const targetNode = document.getElementsByTagName('html')[0]
// 观察器的配置(需要观察什么变动)
const config = {
childList: true,
subtree: true
};
// 当观察到变动时执行的回调函数
const callback = function (mutationsList) {
if (focus_engine.dont_render) {
focus_engine.dont_render = false
return
}
focus_engine.render()
};
// 创建一个观察器实例并传入回调函数
const observer = new MutationObserver(callback);
// 以上述配置开始观察目标节点
observer.observe(targetNode, config);
focus_engine._observer = observer
}
export function unbindMutationObserver(focus_engine) {
focus_engine._observer.disconnect();
}