transitionend 触发多次

当监听 transitionend 事件时,transitionend 会在每个属性 transitioned 时触发,可以通过 event.originalEvent.propertyName 筛选,例如

dom.addEventListener('transitionend', function (e) { 
  if (e.originalEvent.propertyName == 'height') { ... } 
})

自定义 console.log

const log = console.log
console.log = function () { 
  ...
  log.apply(this, arguments)
}

过滤 window 属性

Object.keys(window).filter(n => !/^on/.test(n) && !/^webkit/.test(n) && !(n in document.createElement('div')))

dom.normalize

节点规范化时,调用 dom.normalize(),对当前节点及所有子树节点,执行移除空文本节点、合并相邻文本节点操作。

检查注册监听器是否支持 possive

let supportsPassive = false
const opts = Object.defineProperty({}, 'passive', { 
  get: function () { 
    supportsPassive = true
  } 
})
document.addEventListener('test', null, opts)
document.removeEventListener('test', null, opts)

chrome 分享

navigator.share(...) 


更新于[2025-07-07]