小编Ryt*_*Xia的帖子

如何为 HTMLELement 创建代理

问题

如何为浏览器原生 DOM 对象创建代理?


背景

我想拦截元素样式的设置。所以我为 DOM 对象创建一个代理。但是,当我使用某些函数(例如getComputedStyle().

  const setHandler = (target: any, prop: PropertyKey, value: any, _receiver?: any) => {
    if (/*some condition*/) {
      target[prop] = value
    }
    return true
  }

  const getHandler = (target: any, prop: PropertyKey, _receiver?: any) => {
    return target[prop]
  }

  const style = new Proxy(el.style, {
    get: getHandler,
    set: setHandler
  })
  const classList = new Proxy(el.classList,{
    get: getHandler,
    set: setHandler
  })

  const proxy = new Proxy(el/*HTMLElement*/, {
    get: (target, prop, _receiver) => …
Run Code Online (Sandbox Code Playgroud)

javascript proxy dom ecmascript-6 es6-proxy

5
推荐指数
0
解决办法
1725
查看次数

标签 统计

dom ×1

ecmascript-6 ×1

es6-proxy ×1

javascript ×1

proxy ×1