UNPKG

dom-size-monitor

Version:

监听元素大小变化

39 lines (29 loc) 892 B
import id from './id' import { createSensor } from './sensors' import { SizeSensorId } from './constant' const Sensors = {} export const getSensor = element => { const sensorId = element.getAttribute(SizeSensorId) // 1. 已经存在,则直接取这个 sensor if (sensorId && Sensors[sensorId]) { return Sensors[sensorId] } // 2. 不存在则创建 const newId = id() element.setAttribute(SizeSensorId, newId) const sensor = createSensor(element) // 添加到池子中 Sensors[newId] = sensor return sensor } export const removeSensor = sensor => { const sensorId = sensor.element.getAttribute(SizeSensorId) // 移除 attribute sensor.element.removeAttribute(SizeSensorId) // 移除 sensor 对应的 事件 和 dom 结构 sensor.destroy() // 存在则从 pool 中移除 if (sensorId && Sensors[sensorId]) { delete Sensors[sensorId] } }