优化 JavaScript 代码以提升播放器控制面板的性能

在开发播放器控制面板时,经常需要使用 JavaScript 来处理用户交互和界面更新。为了提高代码的效率和性能,可以采取一些优化策略。

原始代码示例:

document.onmouseover = (e) => {
  if (e.target.classList.contains('xgplayer-controls')) {
    let bottomItem = e.target.querySelector('.xg-inner-controls.xg-pos')
    let copywriting = document.querySelector('[data-e2e="feed-active-video"] .tSXOCvQc')
    bottomItem.style.transition = 'all 0.3s'
    bottomItem.style.bottom = 0 + 'px'
    if (configxgIcon[4].option && copywriting) copywriting.style.display = 'none'
    e.target.onmouseover = () => {
      clearTimeout(bottomItem.dataset.time)
    }
    e.target.onmouseleave = () => {
      clearTimeout(bottomItem.dataset.time)
      bottomItem.dataset.time = setTimeout(() => {
        if (configxgIcon[4].option) bottomItem.style.bottom = -bottomItem.offsetHeight + 'px'
        if (!configxgIcon[0].option && copywriting) copywriting.style.display = ''
      }, 1000);
    }
  }
}

优化后的代码示例:

const controls = document.querySelector('.xgplayer-controls');
if (controls) {
  const bottomItem = controls.querySelector('.xg-inner-controls.xg-pos');
  const copywriting = document.querySelector('[data-e2e="feed-active-video"] .tSXOCvQc');
  let timeoutId;

  controls.addEventListener('mouseover', () => {
    bottomItem.style.transition = 'all 0.3s';
    bottomItem.style.bottom = 0 + 'px';
    if (configxgIcon[4].option && copywriting) copywriting.style.display = 'none';
    clearTimeout(timeoutId);
  });

  controls.addEventListener('mouseleave', () => {
    clearTimeout(timeoutId);
    timeoutId = setTimeout(() => {
      if (configxgIcon[4].option) bottomItem.style.bottom = -bottomItem.offsetHeight + 'px';
      if (!configxgIcon[0].option && copywriting) copywriting.style.display = '';
    }, 1000);
  });
}

优化方法:

  1. 减少不必要的 DOM 查询: 将重复使用的 DOM 查询结果存储在变量中,避免每次使用时都重新查询。
  2. 减少不必要的样式操作: 避免频繁修改样式,可以将修改样式的操作合并到一起执行,减少重绘次数。
  3. 使用事件委托: 将事件监听器绑定到父元素上,通过事件冒泡的机制来处理子元素的事件,减少事件监听器的数量。
  4. 使用节流函数: 对于频繁触发的事件,可以使用节流函数来控制触发的频率,避免过多的操作。

代码优化说明:

  • 代码首先通过 document.querySelector 获取播放器控制面板的元素,并将其存储在 controls 变量中。
  • 然后获取控制面板底部元素和一个特定元素,并分别存储在 bottomItemcopywriting 变量中,避免重复查询。
  • 使用 addEventListener 将事件监听器绑定到控制面板元素上,并使用 clearTimeoutsetTimeout 来管理定时器,避免不必要的定时器操作。

结论:

通过对 JavaScript 代码进行优化,可以有效地提升播放器控制面板的性能,提高用户体验。

优化 JavaScript 代码以提升播放器控制面板的性能

原文地址: https://www.cveoy.top/t/topic/pkjp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录