跳转到内容

SVG.js 事件处理

SVG.js 提供了完整的事件处理系统,让你能够轻松处理用户交互和元素状态变化。通过事件系统,你可以为 SVG 元素添加交互行为,响应用户操作,并实现复杂的交互效果。

事件系统概览

基础事件

  • 基本事件 (Basic Events) - 处理鼠标、触摸等基本事件
    • 点击事件 (click, dblclick)
    • 鼠标事件 (mousedown, mousemove, mouseup)
    • 触摸事件 (touchstart, touchmove, touchend)
    • 键盘事件 (keydown, keyup)

事件监听

自定义事件

使用示例

ts
// 添加基本事件监听器
const rect = draw.rect(100, 100)
rect.on('click', (event) => {
  console.log('矩形被点击')
})

// 使用事件命名空间
rect.on('click.namespace', (event) => {
  // 处理特定命名空间的点击事件
})

// 创建和触发自定义事件
rect.on('custom.event', (event) => {
  console.log('自定义事件数据:', event.detail)
})

rect.fire('custom.event', { detail: { foo: 'bar' } })

最佳实践

事件处理

  • 使用事件委托优化性能
  • 及时移除不需要的事件监听器
  • 避免在事件处理器中执行耗时操作
  • 合理使用事件命名空间

性能优化

  • 使用节流和防抖处理高频事件
  • 避免添加过多事件监听器
  • 优化事件处理器的执行效率

错误处理

  • 在事件处理器中添加适当的错误处理
  • 避免事件处理器中的异常影响其他功能

移动设备支持

  • 同时支持鼠标和触摸事件
  • 处理移动设备特有的事件
  • 优化移动设备的交互体验

浏览器兼容性

  • 支持所有现代浏览器
  • 提供触摸事件的降级处理
  • 注意不同浏览器的事件差异

调试技巧

  • 使用事件监听器调试工具
  • 添加事件日志记录
  • 使用浏览器开发者工具分析事件流